Escrito 28 marzo 2011 - 12:02
Claro Marc !
Te agradezco tu ayuda... la consulta completa es ésta:
[firebird]
SELECT
P.PAT_AGEN||'-'||P.NUM_PEDI AS PEDIME, P1.PAT_AGEN||'-'||P1.NUM_PEDI AS PEDREC,
P.NUM_REFE, P.FEC_PAGO, P.IMP_EXPO, P.CVE_PEDI, P.TIP_CAMB, P.ADU_DESP, P.FAC_AJUS,
NULL AS COL7, P.PES_BRUT, NULL AS COL1,
(SELECT CVE_PAI2 FROM CTARC_PAISES WHERE CVE_PAI = F.PAI_VEND) AS PAI_VEND,
(SELECT CVE_PAI2 FROM CTARC_PAISES WHERE CVE_PAI = F.PAI_ORIG) AS PAI_ORIG,
P.CVE_IMPO, A.ICO_FACT, A.CVE_PROV,
CASE P.IMP_EXPO WHEN '1' THEN (SELECT NOM_PRO FROM CTRAC_PROVED WHERE (CVE_PRO=A.CVE_PROV))
WHEN '2' THEN (SELECT NOM_PRO FROM CTRAC_DESTIN WHERE (CVE_PRO=A.CVE_PROV)) END AS PROVE,
NULL AS COL2, P.MAR_NUME,
/* PRUEBA 1 -> ERROR
CAST(A.NUM_FACT AS CHAR (10)) ||' DEL '|| substring(cast(extract(day from A.FEC_FACT) + 100 as varchar(3)) from 2 for 2) || '/' ||
substring(cast(extract(month from A.FEC_FACT) + 100 as varchar(3)) from 2 for 2) || '/' ||
cast(extract(year from A.FEC_FACT) as varchar(4)) AS FACTURA, */
/* PRUEBA 2 -> ERROR
substring(cast(extract(day from A.FEC_FACT) + 100 as varchar(3)) from 2 for 2) as DIA,
substring(cast(extract(month from A.FEC_FACT) + 100 as varchar(3)) from 2 for 2) AS MES,
cast(extract(year from A.FEC_FACT) as varchar(4)) AS ANNO,
*/
A.NUM_FACT || ' DEL ' || A.FEC_FACT AS FACTURA, /* PRUEBA 3 -> OK*/
P.CAN_BULT, NULL AS COL3, NULL AS COL4, A.VAL_EXTR, A.VAL_DLLS, P.VAL_COME,
((SELECT SUM(IMP_INCR) FROM SAAIO_INCREM WHERE NUM_REFE = P.NUM_REFE) + (SELECT SUM(IMP_INCR) FROM SAAIO_NOINCR WHERE NUM_REFE = P.NUM_REFE)) AS TOT_GASTOS,
P.VAL_NORM, P.FAC_ACTU, F.ADVAL,
(SELECT SUM(TOT_IMPU) FROM SAAIO_CONTPED WHERE (NUM_REFE=P.NUM_REFE) AND (CVE_IMPU='1')) AS DTA,
(SELECT SUM(TOT_IMPU) FROM SAAIO_CONTFRA WHERE (NUM_REFE=P.NUM_REFE) AND (CVE_IMPU='3')) AS IVA, NULL AS COL5,
(SELECT SUM(TOT_IMPU) FROM SAAIO_CONTPED WHERE (NUM_REFE=P.NUM_REFE) AND (CVE_IMPU='15')) AS PREV, '0' AS FP,
(SELECT SUM(VAL_TASA) FROM SAAIO_CONTPED WHERE (NUM_REFE=P.NUM_REFE)) AS SUBTOTAL,
(SELECT COUNT(NUM_REFE) FROM SAAIO_CONTPED WHERE (NUM_REFE=P.NUM_REFE)) AS TOTPAR,
(SELECT SUM(TOT_IMPU) FROM SAAIO_CONTPED WHERE (NUM_REFE=P.NUM_REFE)) AS TOTAL,
(SELECT MAR_NUME FROM SAAIO_PEDIME WHERE (NUM_REFE=P.NUM_REFE)) AS MARCAS,
CASE P.PAT_AGEN WHEN '3468' THEN '70'
WHEN '3012' THEN '22' END AS CVE_AGEN,
(SELECT SUM(TOT_EFEC) FROM SAAIO_PEDIME WHERE NUM_REFE = P.NUM_REFE) AS TOT_EFEC,
NULL AS COL6, (SELECT NUM_CONT FROM SAAIO_CONTEN WHERE NUM_REFE = P.NUM_REFE) AS NUM_CONTEN,
(SELECT CT.NOM_TRAN FROM CTRAC_TRANSP CT INNER JOIN SAAIO_TRANSP ST ON ST.CVE_TRANSP = CT.CVE_TRAN WHERE ST.NUM_REFE = P.NUM_REFE) AS NOM_TRANSP
FROM SAAIO_PEDIME P
LEFT OUTER JOIN SAAIO_PEDIME P1 ON (P.NUM_REFEO = P1.NUM_REFE)
LEFT OUTER JOIN SAAIO_FACTUR A ON (A.NUM_REFE = P.NUM_REFE) AND (A.CONS_FACT = 1)
LEFT OUTER JOIN SAAIO_FACPAR F ON (F.NUM_REFE = P.NUM_REFE) AND (F.CONS_FACT = 1) AND (F.CONS_PART = 1)
LEFT OUTER JOIN SAAIO_CONTEN O ON (P.NUM_REFE = O.NUM_REFE)
LEFT OUTER JOIN SAAIO_TRANSP T ON (T.NUM_REFE = P.NUM_REFE)
LEFT OUTER JOIN CTRAC_TRANSP N ON(T.CVE_TRANSP = N.CVE_TRAN)
WHERE P.FEC_PAGO IS NOT NULL
AND P.CVE_IMPO = '19' AND P.FEC_PAGO BETWEEN '01/01/2009' AND '11/09/2011' AND P.ADU_DESP= '800'
[/firebird]
Gracias !