Señores, tengo la query abajo. Se em mi tabla, NF_CAPEADOR, no hay ningún registro, entonces mi query no retorna nada, mismo que haga registro en la tabla NF_FUNC_VEN. Esta query debe traer los registros de la NF_CAPEADOR(venta del dia) e tambien toda la venta acumulada en el periodo(NF_FUNC_VEN), obedeciendo la regla en las clausulas WHERE. El problema esta en el GROUP BY, pero no se como resolver. Pero si la NF_CAPEADOR, tiene registro, entonces la query funciona. Abajo, la query:
Cita:
SELECT
CAP.CD_FUNC "FUNCIONARIO",
FUNC.NOME "NOME",
ACUMULADO.DT_FUNC,
SUM(CAP.VL_BRUTO + CAP.VL_DESC_ACR) -
COALESCE(DEVOLUCAO.DEV,0) "VENDA DIA",
SUM(CAP.VL_BRUTO + CAP.VL_DESC_ACR) -
COALESCE(DEVOLUCAO.DEV,0) +
COALESCE(ACUMULADO.ACUM,0) "VENDA ACUMULADA"
FROM TB_SAC_NF_CAPEADOR CAP
INNER JOIN TB_SAC_FUNC FUNC
ON(FUNC.CD_FUNC = CAP.CD_FUNC)
LEFT JOIN
(SELECT
CP.CD_FUNC,
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
'2008-Mar-29' AND
'2008-Mar-31'
GROUP BY
CP.CD_FUNC) "DEVOLUCAO"
ON(DEVOLUCAO.CD_FUNC = FUNC.CD_FUNC)
LEFT JOIN
(SELECT
VEN.CD_FUNC,
VEN.DT_FUNC,
SUM(VEN.VL_FUNC)"ACUM"
FROM TB_SAC_FUNC_VEN VEN
WHERE
VEN.DT_FUNC
BETWEEN
'2008-Mar-29' AND
'2008-Mar-31'
GROUP BY
VEN.CD_FUNC,
VEN.DT_FUNC)"ACUMULADO"
ON(ACUMULADO.CD_FUNC = CAP.CD_FUNC)
WHERE
ST_CANC = 0 AND
((SR_NF = 'D2') OR ((SR_NF = 'B2') AND
(CD_CFOP = 6102))) AND DT_ENT
BETWEEN
'2008-Mar-29' AND
'2008-Mar-31'
GROUP BY
CAP.CD_FUNC,
FUNC.NOME,
DEVOLUCAO.DEV,
ACUMULADO.ACUM,
ACUMULADO.DT_FUNC
|