on 07-18-2016 6:43 PM
Buen día Ingenieros
estoy haciendo un informe pero tengo unas dudas
el informe se basa en el proceso de compras que empieza desde solicitud de compra hasta factura de proveedores
en enlace de las tablas creo que lo hice bien , pero cuando hay una solicitud que tiene varias ordenes de compra, me muestra la solicitud la linea y las ordenes en total que se hicieron en la solicitud , como se ve en la imagen llamada solicitudes, Adjunto imagen
la idea es que muestre cada linea con su orden de pedido
este es el código SQL
SELECT DISTINCT
T0.ReqName as Usuario,
T1.Dscription,
T0.DocDate as Fecha_SC,
T1.U_FechaEntrega as Fecha_SS,
T3.DocDate as Fecha_OC,
T5.DocDate as Fecha_EM,
T5.U_FechaZF,
T7.DocDate as Fecha_FP,
T0.DocNum 'S.C',
T3.DocNum 'O.C',
T5.DocNum 'E.M',
T7.DocNum 'F.P',
Datediff(day,T0.DocDate,
T3.DocDate) as D_Mora,
Datediff(day,T0.DocDate,
T1.U_FechaEntrega) as D_Mora_SS
FROM OPRQ T0 INNER JOIN PRQ1 T1 ON T0.DocEntry = T1.DocEntry
LEFT JOIN POR1 T2 ON T2.BaseEntry = T0.DocEntry
LEFT JOIN OPOR T3 ON T3.DocEntry = T2.DocEntry
LEFT JOIN PDN1 T4 ON T4.BaseEntry = T3.DocEntry AND T4.BaseType = 22
LEFT JOIN OPDN T5 ON T5.DocEntry = T4.DocEntry
LEFT JOIN PCH1 T6 ON T6.BaseEntry = T4.DocEntry AND T6.BaseType = 20
LEFT JOIN OPCH T7 ON T7.DocEntry = T6.DocEntry
WHERE T0.DocDate Between [%0] AND [%1] AND T0.DocType=[%2] order by T0.DocDate
Hola Edwin.
Veo que todo va bien. Considero un Group By antes del Order by podria ayudarte con agrupar por tu documento y campos necesarios.
Nos cuentas!
Saludos,
Carlos Belteton
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola Edwin buen dia!
Por favor corre esto en SQL, nota en donde estoy ubicando el Group By adicional dejo a tu discrecion la manera de que campos usar para la agrupacion. Me cuentas como te va. Ahora bien pasame un PRTSC de tu sentencia SQL y el error.
SELECT DISTINCT
T0.REQNAME AS USUARIO,
T1.DSCRIPTION,
T0.DOCDATE AS FECHA_SC,
T1.U_FECHAENTREGA AS FECHA_SS,
T3.DOCDATE AS FECHA_OC,
T5.DOCDATE AS FECHA_EM,
T5.U_FECHAZF,
T7.DOCDATE AS FECHA_FP,
T0.DOCNUM 'S.C',
T3.DOCNUM 'O.C',
T5.DOCNUM 'E.M',
T7.DOCNUM 'F.P',
DATEDIFF(DAY,T0.DOCDATE,
T3.DOCDATE) AS D_MORA,
DATEDIFF(DAY,T0.DOCDATE,
T1.U_FECHAENTREGA) AS D_MORA_SS
FROM OPRQ T0 INNER JOIN PRQ1 T1 ON T0.DOCENTRY = T1.DOCENTRY
LEFT JOIN POR1 T2 ON T2.BASEENTRY = T0.DOCENTRY
LEFT JOIN OPOR T3 ON T3.DOCENTRY = T2.DOCENTRY
LEFT JOIN PDN1 T4 ON T4.BASEENTRY = T3.DOCENTRY AND T4.BASETYPE = 22
LEFT JOIN OPDN T5 ON T5.DOCENTRY = T4.DOCENTRY
LEFT JOIN PCH1 T6 ON T6.BASEENTRY = T4.DOCENTRY AND T6.BASETYPE = 20
LEFT JOIN OPCH T7 ON T7.DOCENTRY = T6.DOCENTRY
WHERE T0.DOCDATE BETWEEN '20160601' AND '20160630' AND T0.DOCTYPE='I'
GROUP BY T0.REQNAME, T1.DSCRIPTION, T0.DOCDATE, T1.FECHAU_ENTREGA, T3.DOCDATE,T5.DOCDATE,T7.DOCDATE, T0.DOCNUM,T3.DOCNUM,T5.DOCNUM,T7.DOCNUM
ORDER BY T0.DOCDATE
Saludos,
Carlos Belteton
Edwin,
Eso no es asi, lo único que debes tomar en cuenta como imperativo es, que los campos del SELECT que estas usando deben estar en el Group By.
No es necesario count, sum o algo parecido.
Comparte el error que te esta mostrando con la correccion del error anterior. Como consejo, ejecuta primero tu sentencia en SQL y ahi valida si te corre el Query!
Saludos,
Carlos B.
Edwin,
En tu query original hace falta hacer el vínculo de las filas entre documento origen y documento destino:
- En los JOINS que tienes indicando el campo BaseEntry, también incluye en campo BaseLine contra el LineNum.
Ejemplo:
LEFT JOIN POR1 T2 ON T2.BaseEntry = T0.DocEntry and T2.BaseLine = T1.LineNum and T2.BaseType = T0.ObjType
Suerte y saludos.
JC.
User | Count |
---|---|
100 | |
11 | |
11 | |
6 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.