Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Query no sustrae en el resultado (https://www.clubdelphi.com/foros/showthread.php?t=54846)

Paulao 01-04-2008 15:15:49

Query no sustrae en el resultado
 
En la query abajxo, necesito hacer con que en el SUM principal, 1º SELECT, haga una subtración del DEVOLUCAO.DEV y no está acontecendo. Será que son los relacionamentos?

Cita:

SELECT
F_PAGTO.TP_F_PAG,
CASE
WHEN
F_PAGTO.TP_F_PAG = 1 THEN 'À VISTA'
WHEN
F_PAGTO.TP_F_PAG = 2 THEN 'CARTÃO'
WHEN
F_PAGTO.TP_F_PAG = 3 THEN 'CHEQUE-PRÉ'
WHEN
F_PAGTO.TP_F_PAG = 4 THEN 'OUTRAS VENDAS'
END "FORMA DE PAGAMENTO",
SUM(NF_PAGTO.VL_PAG)-
COALESCE(DEVOLUCAO.DEV,0) "VALOR"
FROM
TB_SAC_NF_PAGAMENTO NF_PAGTO
INNER JOIN
TB_SAC_FORMA_PAGTO F_PAGTO
ON(NF_PAGTO.CD_F_PAG = F_PAGTO.CD_F_PAG)
INNER JOIN
TB_SAC_NF_CAPEADOR CAP
ON(CAP.NU_NF = NF_PAGTO.NU_NF AND
CAP.NU_CX = NF_PAGTO.NU_CX AND
CAP.SR_NF = NF_PAGTO.SR_NF)
LEFT JOIN

(SELECT
CP.NU_NF,
SUM(CP.VL_BRUTO + CP.VL_DESC_ACR)"DEV"
FROM
TB_SAC_NF_CAPEADOR CP
WHERE CP.SR_NF = 'E2' AND CP.ST_CANC = 0 AND
CP.DT_ENT BETWEEN '29-MAR-2008' AND '29-MAR-2008'
GROUP BY CP.NU_NF) "DEVOLUCAO"
ON(DEVOLUCAO.NU_NF = CAP.NU_NF)

WHERE
CAP.ST_CANC = 0 AND
((CAP.SR_NF = 'D2') OR ((CAP.SR_NF = 'B2') AND
(CAP.CD_CFOP = 6102)))

GROUP BY
F_PAGTO.TP_F_PAG,
DEVOLUCAO.DEV

ORDER BY F_PAGTO.TP_F_PAG

Paulao 02-04-2008 14:21:34

Resolvi quebrando en blocos asi:

Cita:

SELECT DISTINCT
TB_SAC_FORMA_PAGTO.TP_F_PAG,
COALESCE((VENDAS.VL_PAG - DEVOLUCOES.VL_PAG),0) VL_PAG
FROM
TB_SAC_FORMA_PAGTO
LEFT JOIN
(SELECT
TB_SAC_FORMA_PAGTO.TP_F_PAG,
COALESCE(SUM(TB_SAC_NF_PAGAMENTO.VL_PAG),0) VL_PAG
FROM
TB_SAC_NF_CAPEADOR
INNER JOIN TB_SAC_NF_PAGAMENTO ON (TB_SAC_NF_CAPEADOR.NU_NF = TB_SAC_NF_PAGAMENTO.NU_NF)
AND (TB_SAC_NF_CAPEADOR.NU_CX = TB_SAC_NF_PAGAMENTO.NU_CX)
AND (TB_SAC_NF_CAPEADOR.SR_NF = TB_SAC_NF_PAGAMENTO.SR_NF)
INNER JOIN TB_SAC_FORMA_PAGTO ON (TB_SAC_NF_PAGAMENTO.CD_F_PAG = TB_SAC_FORMA_PAGTO.CD_F_PAG)
WHERE
(TB_SAC_NF_CAPEADOR.ST_CANC = 0) AND
((TB_SAC_NF_CAPEADOR.SR_NF = 'D2') OR
((TB_SAC_NF_CAPEADOR.SR_NF = 'B2') AND (TB_SAC_NF_CAPEADOR.CD_CFOP = 6102)))
GROUP BY
TB_SAC_FORMA_PAGTO.TP_F_PAG) VENDAS
ON (TB_SAC_FORMA_PAGTO.TP_F_PAG = VENDAS.TP_F_PAG)
LEFT JOIN
(SELECT
TB_SAC_FORMA_PAGTO.TP_F_PAG,
COALESCE(SUM(TB_SAC_NF_PAGAMENTO.VL_PAG),0) VL_PAG
FROM
TB_SAC_NF_CAPEADOR
INNER JOIN TB_SAC_NF_PAGAMENTO ON (TB_SAC_NF_CAPEADOR.NU_NF = TB_SAC_NF_PAGAMENTO.NU_NF)
AND (TB_SAC_NF_CAPEADOR.NU_CX = TB_SAC_NF_PAGAMENTO.NU_CX)
AND (TB_SAC_NF_CAPEADOR.SR_NF = TB_SAC_NF_PAGAMENTO.SR_NF)
INNER JOIN TB_SAC_FORMA_PAGTO ON (TB_SAC_NF_PAGAMENTO.CD_F_PAG = TB_SAC_FORMA_PAGTO.CD_F_PAG)
WHERE
(TB_SAC_NF_CAPEADOR.ST_CANC = 0) AND
(TB_SAC_NF_CAPEADOR.SR_NF = 'E2')
GROUP BY
TB_SAC_FORMA_PAGTO.TP_F_PAG) DEVOLUCOES
ON (TB_SAC_FORMA_PAGTO.TP_F_PAG = DEVOLUCOES.TP_F_PAG)


La franja horaria es GMT +2. Ahora son las 13:50:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi