Faccruz 0 Denunciar post Postado Dezembro 22, 2009 Boa tarde, tenho uma dúvida em relação a montagem de uma SQL para exibir o seguinte relatório. Loja - Todos os Dados - A Vista - Contratos - Pedidos Anteriores - Pedidos Atuais - Diferença L01 - 2525,00 - 25,00 - 2500,00 - 0,00 - 0,00 - 0,00 L02 - 1300,00 - 0,00 - 1325,00 - 25,00 - 0,00 - 0,00 Algumas particularidades: 1 - Os A vista e Contratos são apenas os faturados do mês informado 2 - Todos os dados não faz diferença entre os faturados e não faturados 3 - Pedidos Anteriores: São os vendidos no mês anterior e faturados no mês atual 4 - Pedidos Atuais: São os faturados e vendidos no mês atual 5 - A diferença é calculada da seguinte forma: (A Vista + Contratados) - Todos - Pedidos Anteriores + Pedidos Atuais Alguem poderia me dar uma luz? Compartilhar este post Link para o post Compartilhar em outros sites
Faccruz 0 Denunciar post Postado Dezembro 23, 2009 Cheguei em uma SQL dessa forma, mas acredito que tenha um jeito mais fácil. select C.LOJA, nvl(sum(C.VlrCurso), 0) Oracle, nvl((SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'S' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND LENGTH(CONTRATO) < 9 AND C.LOJA = LOJA GROUP BY LOJA), 0) VV, nvl((SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'S' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND LENGTH(CONTRATO) >= 9 AND C.LOJA = LOJA GROUP BY LOJA), 0) CONTRATOS, nvl((SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'N' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '09/2009' AND C.LOJA = LOJA GROUP BY LOJA), 0) PEDIDOS_ANTIGOS, nvl((SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'N' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND C.LOJA = LOJA GROUP BY LOJA), 0) PEDIDOS_ATUAIS, (((SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'S' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND LENGTH(CONTRATO) < 9 AND C.LOJA = LOJA GROUP BY LOJA) + (SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'S' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND LENGTH(CONTRATO) >= 9 AND C.LOJA = LOJA GROUP BY LOJA)) - SUM(C.VLRCURSO) - (SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'N' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '09/2009' AND C.LOJA = LOJA GROUP BY LOJA) + (SELECT SUM(VLRCURSO) FROM CYBELAR_CRESCABR WHERE FATURADO = 'N' AND TO_CHAR(DTVENDA, 'MM/YYYY') = '10/2009' AND C.LOJA = LOJA GROUP BY LOJA)) CONFERENCIA from cybelar_crescabr C where Faturado = 'S' and to_char(dtvenda, 'MM/yyyy') = '10/2009' group by Loja ORDER BY LOJA Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Dezembro 23, 2009 Dê uma pesquisada na claúsula CASE, ela resolve melhor este tipo de problema. Compartilhar este post Link para o post Compartilhar em outros sites