Rodrigo Burgos Postado 9 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Denunciar Compartilhar Postado 9 de Dezembro de 2008 Boa tarde, Elaborei uma sentença que irá me retornar valores dentro de determinadas condições, vide: SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, (SUM(VLRDEBITO)-SUM(VLRCREDITO)), AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL WHERE R.DATA BETWEEN '2008-11-01' AND '2008-11-30' AND C.REDUZIDO IN ('10937',' 10892','10983','11037',' 11039','11041','10951',' 10950','11016','10947',' 11067','11066','10956',' 11048','10987','11042',' 11003','10938','10960',' 10968','11068','12478') AND G.CODCONTA LIKE '1.1.7.06.000' GROUP BY C.DESCRICAO, C.REDUZIDO Ela está ok, porém eu queria que ela me retornasse os valores nulos dentro daquela condição ali do where: AND C.REDUZIDO IN ('10937','10892','10983',' 11037','11039','11041',' 10951',' 10950','11016',' 10947',' 11067','11066',' 10956','11048',' 10987',' 11042','11003','10938',' 10960','10968',' 11068',' 12478') Ou seja, além de trazer os valores existentes, trousesse também os que estivessem zerados. Tentei colocar isso: WHERE R.DATA BETWEEN '2008-11-01' AND '2008-11-30' AND C.REDUZIDO IN ('10937','10892','10983',' 11037','11039','11041',' 10951','10950',' 11016',' 10947','11067','11066',' 10956','11048',' 10987',' 11042','11003',' 10938',' 10960',' 10968','11068',' 12478') AND G.CODCONTA LIKE '1.1.7.06.000' AND ((SUM(VLRDEBITO)-SUM(VLRCREDITO)) < '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) = '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) > '0') GROUP BY C.DESCRICAO, C.REDUZIDO Mas não deu certo, tem que ser feito junto com o HAVING. Alguma luz? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Lameque Postado 9 de Dezembro de 2008 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 19 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 122 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 9 de Dezembro de 2008 Rodrigo... Você tem de mudar a cláusula WHERE, pois ela filtra tudo. Neste caso voce vai ter de alterar as suas cláusulas ON para que elas sim atendam as suas condições e aí sim com os INNER JOIN façam os agrupamentos mesmo com valores vazios. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nik Postado 9 de Dezembro de 2008 Tópicos Que Criei: 101 Tópicos/Dia: 0.02 Meu Conteúdo: 456 Conteúdo/Dia: 0.08 Reputação: 0 Pontos/Conquistas: 3.290 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 48 Denunciar Compartilhar Postado 9 de Dezembro de 2008 Rodrigo... se a sentença está ok acrescente o having no final... SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, (SUM(VLRDEBITO)-SUM(VLRCREDITO)) AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL WHERE R.DATA BETWEEN '2008-11-01' AND '2008-11-30' AND C.REDUZIDO IN ('10937', '10892', '10983', '11037', '11039', '11041', '10951', '10950', '11016', '10947', '11067', '11066', '10956', '11048', '10987', '11042', '11003', '10938', '10960', '10968', '11068', '12478') AND G.CODCONTA LIKE '1.1.7.06.000' GROUP BY C.DESCRICAO, C.REDUZIDO HAVING (A SITUAÇÃO QUE VC QUER... EX = HAVING C.REDUZIDO = 30) NIK Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Rodrigo Burgos Postado 9 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 9 de Dezembro de 2008 (editado) Nik, no caso fiz como voce me disse colocando o having no final, e ainda coloquei um ISNULL ali aonde me traz o saldo, ou seja, seria que se o resultado do saldo fosse nulo, que me retornasse 0, então ficou: SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, ISNULL((SUM(VLRDEBITO)-SUM(VLRCREDITO)),0) AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL WHERE R.DATA BETWEEN '2008-11-01' AND '2008-11-30' AND C.REDUZIDO IN ('10937', '10892', '10983', '11037', '11039', '11041', '10951', '10950', '11016', '10947', '11067', '11066', '10956', '11048', '10987', '11042', '11003', '10938', '10960', '10968', '11068', '12478') AND G.CODCONTA LIKE '1.1.7.06.000' GROUP BY C.DESCRICAO, C.REDUZIDO HAVING ((SUM(VLRDEBITO)-SUM(VLRCREDITO)) < '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) = '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) > '0') Mas ainda assim só trouxe valores aonde foi feito o cálculo, e não me trouxe os nulos. Lameque, não entendi bem o que vc faloumas mas agradeço a intenção. Editado 12 de Dezembro de 2008 por Henrique Caldeira Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Lameque Postado 9 de Dezembro de 2008 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 19 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 122 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 9 de Dezembro de 2008 Rodrigo tenta isso e vê se funciona SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, (SUM(VLRDEBITO)-SUM(VLRCREDITO)) AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA AND R.DATA BETWEEN '2008-09-01' AND '2008-11-30' AND C.REDUZIDO IN('10937', '10892', '10983', '11037', '11039', '11041', '10951', '10950', '11016', '10947', '11067', '11066', '10956', '11048', '10987', '11042', '11003', '10938', '10960', '10968', '11068', '12478') INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL AND G.CODCONTA LIKE '1.1.7.06.000' GROUP BY C.DESCRICAO, C.REDUZIDO Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Rodrigo Burgos Postado 9 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 9 de Dezembro de 2008 Deu certo nao lamelque, e estranho que os valores ficaram divergentes na sentença. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nik Postado 9 de Dezembro de 2008 Tópicos Que Criei: 101 Tópicos/Dia: 0.02 Meu Conteúdo: 456 Conteúdo/Dia: 0.08 Reputação: 0 Pontos/Conquistas: 3.290 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 48 Denunciar Compartilhar Postado 9 de Dezembro de 2008 Rodrigo o problema é o seguinte... A clausula having tem que haver um agrupamento... correto? e os dados nulos não pode ter agrupamento, ou seja, como agrupar dados nulos? Dessa forma sugiro o seguinte... Use essa parte da sentença que está funcionando para valores diferentes de nulo e faça un UNION com outra sentença trazendo somente os valores nulos. CAPITOU... NIK SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, ISNULL((SUM(VLRDEBITO)-SUM(VLRCREDITO)),0) AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL WHERE R.DATA BETWEEN '2008-11-01' AND '2008-11-30' AND C.REDUZIDO IN ('10937','10892','10983','11037','11039','11041','10951','10950','11016','10947','11067','11066','10956','11048','10987','11042','11003','10938','10960','10968','11068','12478') AND G.CODCONTA LIKE '1.1.7.06.000' GROUP BY C.DESCRICAO, C.REDUZIDO HAVING ((SUM(VLRDEBITO)-SUM(VLRCREDITO)) < '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) = '0' OR (SUM(VLRDEBITO)-SUM(VLRCREDITO)) > '0') UNION SELECT C.REDUZIDO, C.DESCRICAO AS DESCRICAO_CONTA_CONTAB, 0 AS SALDO FROM CRATEIOLC R INNER JOIN CCONTA C ON C.CODCONTA=R.CODCONTA INNER JOIN CGERENCIA G ON G.CODCONTA=R.CODGERENCIAL WHERE ... (VALOR NULO) Com certeza vai funcionar... Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Lameque Postado 9 de Dezembro de 2008 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 19 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 122 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 9 de Dezembro de 2008 Tenta trocar os INNER JOIN por LEFT JOIN, tomando cuidado para se ter as tabelas que "mandaram" na sentença do lado esquerdo e as que possam ter valores nulos no lado direito da sentença. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Rodrigo Burgos Postado 9 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 9 de Dezembro de 2008 Desatençao minha pessoal. Esses valores não vão retornar nulo, pelo fato de não estarem como nulo... Simplesmente não existem valores para eles. Não seria o caso de retorna o nulo, mas sim se ele não existir, retornar 0. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Henrique Caldeira Postado 9 de Dezembro de 2008 Tópicos Que Criei: 92 Tópicos/Dia: 0.02 Meu Conteúdo: 791 Conteúdo/Dia: 0.13 Reputação: 1 Pontos/Conquistas: 4.838 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 38 Denunciar Compartilhar Postado 9 de Dezembro de 2008 Rodrigo, está resolvido? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Rodrigo Burgos Postado 10 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 10 de Dezembro de 2008 Não, não está. Preciso que os 'C.REDUZIDOS' do WHERE, que não tiveram valores lançados, retornem 0 na consulta. Mas não tô vendo como... Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Dayana Fernandes Postado 10 de Dezembro de 2008 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 21 Conteúdo/Dia: 0.00 Reputação: 1 Pontos/Conquistas: 145 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 40 Denunciar Compartilhar Postado 10 de Dezembro de 2008 olá! Pegue o campo que vc precise e coloque assim... ex: flan.valorbaixado where isnull (flan.valorbaixado, 0 ) = 0 Dessa forma, ele transforma todo nulo em 0 e vc pegará os zeros tb! Testa aí! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Henrique Caldeira Postado 10 de Dezembro de 2008 Tópicos Que Criei: 92 Tópicos/Dia: 0.02 Meu Conteúdo: 791 Conteúdo/Dia: 0.13 Reputação: 1 Pontos/Conquistas: 4.838 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 38 Denunciar Compartilhar Postado 10 de Dezembro de 2008 ja tentou mudar os INNER JOIN por LEFT JOIN?? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Rodrigo Burgos Postado 10 de Dezembro de 2008 Tópicos Que Criei: 236 Tópicos/Dia: 0.04 Meu Conteúdo: 798 Conteúdo/Dia: 0.13 Reputação: 3 Pontos/Conquistas: 6.333 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 44 Autor Denunciar Compartilhar Postado 10 de Dezembro de 2008 Dayana: O problema é que o valor não está presente na tabela, nem como nulo ele está. Henrique: tentei agora e também nao trouxe. Vou ter que reformular esta sentença, como está não dá. O paliativo 'burro' que fiz foi colocar uma sentença em cada linha da tabela, e trocar a cada linha, a conta. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.