› Fóruns › SQL e PL/SQL › [RESOLVIDO] Ajuda com query, por favorrrr…. › [RESOLVIDO] Ajuda com query, por favorrrr….
Se você quer juntar tudo em uma só consulta, você conseguiria fazer mais ou menos assim:
SELECT CNPJ,FANTASIA, SUM(VL_PROC), SUM(VL_AUT_PROC), SUM(CONT_PROC_01), SUM(CONT_PROC_02), SUM(VL_CONS), SUM(VL_AUT_CONS), SUM(CONT_CONS_01), SUM(CONT_CONS_02) FROM (
SELECT P.CNPJ, D.FANTASIA, SUM(A.VALOR) VL_PROC, SUM(A.VALORAUTORIZADOPGTO) VL_AUT_PROC, COUNT() CONT_PROC_01, COUNT(DECODE(A.STATUSAUDITORIA,'NAO AUDITADO',NULL,1)) CONT_PROC_02, NULL VL_CONS, NULL VL_AUT_CONS, NULL CONT_CONS_01, NULL CONT_CONS_02
FROM GUIA_DADO H
JOIN GUIA_PROCEDIMENTO A ON ( H.IDGUIADADO = A.IDGUIADADO )
JOIN PRESTADOR_CONTRATO G ON ( A.IDCONTRATO = G.ID )
JOIN PRESTADOR_DETAIL P ON (P.IDDETAIL = G.IDPRESTADORDETAIL)
JOIN PRESTADOR_DADO D ON ( P.IDPRESTADOR = D.IDPRESTADOR )
WHERE A.STATUS = 'LIBERADO'
AND A.STATUSAUDITORIA = R('NAO AUDITADO')
AND H.DATAEMISSAO
BETWEEN TO_DATE('01/09/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy')
AND LAST_DAY(TO_DATE('01/09/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy'))
GROUP BY P.CNPJ, D.FANTASIA
UNION ALL
SELECT P.CNPJ, D.FANTASIA, NULL VL_PROC, NULL VL_AUT_PROC, NULL CONT_PROC_01, NULL CONT_PROC_02, SUM(A.VALOR) VL_CONS, SUM(A.VALORAUTORIZADOPGTO) VL_AUT_CONS, COUNT() CONT_CONS_01, COUNT(DECODE(A.STATUSAUDITORIA,'NAO AUDITADO',NULL,1)) CONT_CONS_02
FROM GUIA_DADO H
JOIN GUIA_CONSULTA A ON ( H.IDGUIADADO = A.IDGUIADADO )
JOIN PRESTADOR_CONTRATO G ON ( A.IDCONTRATO = G.ID )
JOIN PRESTADOR_DETAIL P ON (P.IDDETAIL = G.IDPRESTADORDETAIL)
JOIN PRESTADOR_DADO D ON ( P.IDPRESTADOR = D.IDPRESTADOR )
WHERE A.STATUS = 'LIBERADO' AND A.FLAG = 'FINALIZADO'
AND A.STATUSAUDITORIA = R('NAO AUDITADO')
AND H.DATAEMISSAO
BETWEEN TO_DATE('01/09/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy')
AND LAST_DAY(TO_DATE('01/09/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy'))
GROUP BY P.CNPJ, D.FANTASIA
) GROUP BY CNPJ, FANTASIA ;
Mas pode ter algum errinho aí pelo meio, mas acho que a idéia dá pra você tentar aproveitar… Espero que entenda o que eu tentei fazer!
O lance da data eu troquei mais pro caso de haver um índice na coluna! Mas ainda assim, o lance do tunning, com certeza tem gente mais qualificada do que eu por aqui pra te ajudar melhor.