Consulta Funciona no SQLBuilder e no Scriptcase não

Tenho essa consulta testada no SQL BUILDER ferramenta do scriptcase e quando jogo dentro de uma consulta ela dá erro. Alguém pode me explicar porque?

SELECT
CXDEB.id,
CXDEB.id_Cod_equipamento,
CXDEB.id_Codconvenio,
CXDEB.id_Cod_itens_despesas,
CXDEB.data,
SUM(CXDEB.Valor)
FROM
FIN_CONTROLE_CAIXA_DEBITOS CXDEB
GROUP BY
CXDEB.id_Cod_itens_despesas

UNION ALL

SELECT
CPGAR.CodContapagar,
CPGAR.Cod_equipamento,
CPGAR.Codconvenio,
CPGAR.id_Cod_itens_despesas,
CPGAR.Datavencimento,
SUM(CPGAR.Valordocumento)
FROM
FIN_CONTAS_PAGAR CPGAR
GROUP BY
CPGAR.id_Cod_itens_despesas

Resultado

   Erro ao acessar o banco de dados

Unknown column ‘CXDEB.Valor’ in ‘field list’
SelectLimit(SELECT id, id_Cod_equipamento, id_Codconvenio, id_Cod_itens_despesas, data, SUM(CXDEB.Valor) as sc_field_0 from (SELECT CXDEB.id, CXDEB.id_Cod_equipamento, CXDEB.id_Codconvenio, CXDEB.id_Cod_itens_despesas, CXDEB.data, SUM(CXDEB.Valor) FROM FIN_CONTROLE_CAIXA_DEBITOS CXDEB GROUP BY CXDEB.id_Cod_itens_despesas UNION ALL SELECT CPGAR.CodContapagar, CPGAR.Cod_equipamento, CPGAR.Codconvenio, CPGAR.id_Cod_itens_despesas, CPGAR.Datavencimento, SUM(CPGAR.Valordocumento) FROM FIN_CONTAS_PAGAR CPGAR GROUP BY CPGAR.id_Cod_itens_despesas) nm_sel_esp , 17, 0)

Se tiro o SUM ela funciona…

Obrigado

Olá o group by deve seguir o critério:
select coluna1, coluna2, coluna3, sum(valor)
group by (aqui deve conter todas as colunas menos as totalizadoras, como na linha abaixo:)
coluna1, coluna2, coluna3

No seu caso você não agrupou corretamente

E o union all deve estar entre ()

select 1,2,3
union all
(
select 4,5,6
)

Rodrigo, obrigado pela dica…Vou testar e já posto o resultado…

Obrigado novamente

Marcelo

Bom dia …Fiz da forma que você falou:

SELECT
CPGAR.Cod_equipamento,
CPGAR.Codconvenio,
CPGAR.id_Cod_itens_despesas,
CPGAR.Datavencimento,
SUM(CPGAR.Valordocumento)
FROM
FIN_CONTAS_PAGAR CPGAR
GROUP BY
CPGAR.Cod_equipamento, CPGAR.Codconvenio, CPGAR.id_Cod_itens_despesas, CPGAR.Datavencimento

UNION ALL

(
SELECT
CXDBTO.id_Cod_equipamento,
CXDBTO.id_Codconvenio,
CXDBTO.id_Cod_itens_despesas,
CXDBTO.data,
SUM(CXDBTO.Valor)
FROM
FIN_CONTROLE_CAIXA_DEBITOS CXDBTO
GROUP BY
CXDBTO.id_Cod_equipamento, CXDBTO.id_Codconvenio, CXDBTO.id_Cod_itens_despesas, CXDBTO.data
)

Abaixo segue o erro do scriptcase:

ERRO
Erro ao acessar o banco de dados
Unknown column ‘CPGAR.Valordocumento’ in ‘field list’
SelectLimit(SELECT Cod_equipamento, Codconvenio, id_Cod_itens_despesas, Datavencimento, SUM(CPGAR.Valordocumento) as sc_field_0 from (SELECT CPGAR.Cod_equipamento, CPGAR.Codconvenio, CPGAR.id_Cod_itens_despesas, CPGAR.Datavencimento, SUM(CPGAR.Valordocumento) FROM FIN_CONTAS_PAGAR CPGAR GROUP BY CPGAR.Cod_equipamento, CPGAR.Codconvenio, CPGAR.id_Cod_itens_despesas, CPGAR.Datavencimento UNION ALL ( SELECT CXDBTO.id_Cod_equipamento, CXDBTO.id_Codconvenio, CXDBTO.id_Cod_itens_despesas, CXDBTO.data, SUM(CXDBTO.Valor) FROM FIN_CONTROLE_CAIXA_DEBITOS CXDBTO GROUP BY CXDBTO.id_Cod_equipamento, CXDBTO.id_Codconvenio, CXDBTO.id_Cod_itens_despesas, CXDBTO.data )) nm_sel_esp , 17, 0)

Marcelo,

Experimente colocar um ALIAS para esse campo, tipo:

SUM(CPGAR.Valordocumento) as Valor_doc

Faça o seguinte:

SELECT
Cod_equipamento,
Codconvenio,
id_Cod_itens_despesas,
Datavencimento,
SUM(Valordocumento)
FROM
FIN_CONTAS_PAGAR
GROUP BY
Cod_equipamento, Codconvenio, id_Cod_itens_despesas, Datavencimento

UNION ALL
(
SELECT
id_Cod_equipamento,
id_Codconvenio,
id_Cod_itens_despesas,
data,
SUM(Valor)
FROM
FIN_CONTROLE_CAIXA_DEBITOS
GROUP BY
id_Cod_equipamento, id_Codconvenio, id_Cod_itens_despesas, data
)

Rodrigo e Kleber…

Obrigado pela colaboração. Colocando o alias conforme o Kleber falou funcionou direitinho. O que não está acontecendo é a soma dos valores da segunda tabela.

Ele assume o SUM da primeira mas na segunda não está somando o valor. Os mesmos aparecem separados em duas linhas.

OBS: Não sei como colocar a imagem aqui para mostrar para vocês o que está acontecendo!!

Bom quando você usa um union all ou sum, a melhor opção é sempre colocar os nomes dos campos, mesmo que funcionou com aliás recomendo deixar com nomes padrões. Faça isso como primeiro teste…

Acontece que quando você faz um union all e altera geralmente não grava todas alterações, então faça o seguinte, retire o union all do seu select, salve.
Após retorne e cole o union all e teste…

Acho que em algum desses 2 testes resolverrá

crie uma view

Rodrigo fiz o que você falou: Tentei sem alias e realmente não funciona, também fiz o segundo procedimento e também não funcionou. Eu copiei e colei a consulta do jeito que você postou aqui, só por desencargo de consciência.

Cod Equipamento 	Codconvenio 	Id Cod Itens Despesas 	Datavencimento 	Valor Total
3 	                                         11 	                        5 	                                    20/10/2014 	13.000,00
3 	                                         11                           7                                         20/10/2014 	  4.500,00
3                                               11                   	5 	                                    21/10/2014         1.000,00
3 	                                         11                          	7                                         14/10/2014 	     400,00
3                                               11                   	7                                          20/10/2014 	     500,00 OBS: Esses dois últimos valores deveriam aparecer somados -> R$ 900,00 e estão aparecendo separados...

Obrigado e peço desculpas pelo incômodo…

Marcelo

Bom dia Haroldo, pesquisei sobre views por esses dias. Como estou iniciando em programação tenho que pesquisar mais e ver como posso trabalhar com view no mysql

Obrigado

Marcelo

Olá na verdade não soma os 900 porque a data muda entre as 2 linhas, o group by funciona desde que todas os campos sejam de mesmo valor.
Faça um teste de mudar no bd e verifica que irá somar.

Rodrigo…você tem razão…Desculpe-me a ignorância…Mas é só errando que aprendemos…rsrsr.

Vou abusar mais um pouco…rsrsr - Unido essas duas tabelas, como eu poderia mostrar os valores que são totalizados em duas colunas separadas?

Dessa maneira não uso o UNION, correto?

Não entendi muito bem, seria o mesmo campo 2 vezes ou 2 campo com totais diferentes?

Gostaria de ver se é possível fazer assim:

item despesa Valor tabela1(previsão de compra) valor tabela 2(gasto diario) Total Gasto periodo X
Arroz 1.000,00 200,00 R$ 1.200,00
papel 100,00 300,00 R$ 400,00

Pegar as duas tabelas, unir buscando os valores e separá-lo do jeito que coloquei acima…

cria um campo
{Total_Gasto_periodo_X}

onRecord
{Total_Gasto_periodo_X} = {valor tabela 1}+{valor tabela 2};

ou no sql
select sum(tabela1), sum(tabela2), sum(tabela1+tabela2)