Señores, hizo de otra forma consegui algo, pero no lo todo cierto, o sea, si la tabla CAPEADOR estás sin registro, entonces el resultdo es corecto, pero no estas vacia, entonces alguns registros aparecem en la venta diaria, pero no todos los vendedores, y todos tiene ventas. Mira la query abajo:
Cita:
SELECT
F.CD_FUNC,
F.NOME,
COALESCE((DIARIA.DIA - DEVOLUCAO.DEV),0) "VENDA DIA",
COALESCE((DIARIA.DIA - DEVOLUCAO.DEV),0) +
COALESCE(ACUMULADA.ACUM,0) "VENDA ACUMULADA"
FROM
TB_SAC_FUNC F
LEFT JOIN
(SELECT
FUNC.CD_FUNC,
SUM(COALESCE(CP.VL_BRUTO,0) + COALESCE(CP.VL_DESC_ACR,0)) "DEV"
FROM
TB_SAC_FUNC FUNC
LEFT JOIN
TB_SAC_NF_CAPEADOR CP
ON(FUNC.CD_FUNC = CP.CD_FUNC)
WHERE
ST_CANC = 0 AND
SR_NF = 'E2' AND
DT_ENT
BETWEEN
'2008-Mar-01' AND
'2008-Mar-31'
GROUP BY
FUNC.CD_FUNC)"DEVOLUCAO"
ON(DEVOLUCAO.CD_FUNC = F.CD_FUNC)
LEFT JOIN
(SELECT
FUNC.CD_FUNC,
SUM(COALESCE(CP.VL_BRUTO,0) + COALESCE(CP.VL_DESC_ACR,0)) "DIA"
FROM
TB_SAC_FUNC FUNC
LEFT JOIN
TB_SAC_NF_CAPEADOR CP
ON(FUNC.CD_FUNC = CP.CD_FUNC)
WHERE
ST_CANC = 0 AND
((SR_NF = 'D2') OR ((SR_NF = 'B2') AND
(CD_CFOP = 6102))) AND DT_ENT
BETWEEN
'2008-Mar-01' AND
'2008-Mar-31'
GROUP BY
FUNC.CD_FUNC)"DIARIA"
ON(DIARIA.CD_FUNC = F.CD_FUNC)
LEFT JOIN
(SELECT
F_VEN.CD_FUNC,
SUM(COALESCE(VL_FUNC,0)) "ACUM"
FROM
TB_SAC_FUNC_VEN F_VEN
WHERE
F_VEN.DT_FUNC
BETWEEN
'2008-Mar-01' AND
'2008-Mar-31'
GROUP BY
F_VEN.CD_FUNC)"ACUMULADA"
ON(ACUMULADA.CD_FUNC = F.CD_FUNC)
WHERE
F.CD_CARGO < 4
ORDER BY
F.CD_FUNC
|