PDA

Ver la Versión Completa : Query no viene correcto


Paulao
17-03-2008, 16:22:03
Tengo un problema. Como hago con la query abajo, hacer con que mi tabla virtual ACUMULADO traiga records que no están en la tabla virtual ACUM_ITEM? O sea, tengo registro en la tabla SEC_VEN con CD_SEC = 2 e no lo tengo en la tabla NF_ITEM. Entonces, con el JOIN que hizo, usando LEFT en la tabla virtual ACUMULADO no viene este record. Gustaria que tuviesse los record que no están en la tabla virtual ACUM_ITEM. Gracias!!!
(Tengo un poco de dificuldades de escribir en Español)
SELECT
SEC.CD_SEC
,SEC.DESCRICAO
,SUM(COALESCE((ACUM_ITEM.ITEM),0)) "VENDA DO DIA"
,SUM(COALESCE((ACUM_SEC.SECAO),0) + COALESCE((ACUM_ITEM.ITEM),0)) "ACUMULADO"
FROM TB_SAC_SECAO SEC
INNER JOIN
(SELECT
NF_ITEM.CD_SEC,
SUM(NF_ITEM.QT_ITEM) ITEM
FROM
TB_SAC_NF_CAPEADOR NF_CAPEADOR,
TB_SAC_NF_ITEM NF_ITEM
WHERE
NF_CAPEADOR.NU_CX = NF_ITEM.NU_CX AND
NF_CAPEADOR.NU_NF = NF_ITEM.NU_NF AND
NF_CAPEADOR.SR_NF = NF_ITEM.SR_NF AND
NF_CAPEADOR.ST_CANC = 0 AND
((NF_CAPEADOR.SR_NF = 'D2') OR
(NF_CAPEADOR.SR_NF = 'B2' AND
NF_CAPEADOR.CD_CFOP = 6102))
GROUP BY
NF_ITEM.CD_SEC) ACUM_ITEM
ON (ACUM_ITEM.CD_SEC = SEC.CD_SEC)

LEFT JOIN
(SELECT
CD_SEC,
SUM(QT_SEC) SECAO
FROM
TB_SAC_SEC_VEN
WHERE
DT_SEC >= '2008-Mar-01' AND
DT_SEC <= '2008-Mar-08'
GROUP BY
CD_SEC) ACUM_SEC
ON (ACUM_SEC.CD_SEC = SEC.CD_SEC)
GROUP BY
SEC.CD_SEC
,SEC.DESCRICAO