buen dia amigos
tengo una query y solo me trae los artículos con lote y me duplica el valor de costo por cada cantidad de lote, necesito es todos los articulos en inventario y fecha de ingreso es para sacar dias de envejecimiento
SELECT T0."ItemCode", T0."ItemName", T1."ItmsGrpNam", T2."OnHand", T2."AvgPrice" "Precio COP", T3."DistNumber", T2."WhsCode" "Almacen", SUM (T2."OnHand" * T2."AvgPrice") "Total COP", T3."DistNumber", T4."InDate" FROM OITM T0
INNER JOIN OITB T1 ON T0."ItmsGrpCod" = T1."ItmsGrpCod"
INNER JOIN OITW T2 ON T0."ItemCode" = T2."ItemCode"
LEFT JOIN OBTN T3 ON T0."ItemCode" = T3."ItemCode"
LEFT JOIN OIBT T4 ON T0."ItemCode" = T4."ItemCode" WHERE T2."OnHand" > 0 GROUP BY T0."ItemCode", T0."ItemName", T1."ItmsGrpNam", T2."WhsCode", T2."OnHand", T2."AvgPrice", T3."DistNumber", T4."InDate" ORDER BY T1."ItmsGrpNam"
No entendí, se duplica por la OBTN no? Es decir; si un articulo existe en dos lotes distintos está bien que se duplique el articulo en la consulta.
Yo creo que el enfoque principal debería ser buscar los lotes con su fecha, porque si se pretende buscar los días de stock en el almacén por sus diferentes lotes, está bien que muestre si un mismo artículo tiene diferentes días de almacenamiento.
Algo así:
SELECT
T0."ItemCode",
T0."ItemName",
T1."ItmsGrpNam",
T2."OnHand",
T2."AvgPrice" AS "Precio COP",
T2."WhsCode" AS "Almacen",
SUM(T2."OnHand" * T2."AvgPrice") AS "Total COP",
T3."DistNumber",
T4."InDate"
FROM
OITM T0
INNER JOIN
OITB T1 ON T0."ItmsGrpCod" = T1."ItmsGrpCod"
INNER JOIN
OITW T2 ON T0."ItemCode" = T2."ItemCode"
LEFT JOIN
OBTN T3 ON T0."ItemCode" = T3."ItemCode"
LEFT JOIN
OIBT T4 ON T3."DistNumber" = T4."BatchNum"
WHERE
T2."OnHand" > 0
GROUP BY
T0."ItemCode",
T0."ItemName",
T1."ItmsGrpNam",
T2."WhsCode",
T2."OnHand",
T2."AvgPrice",
T3."DistNumber",
T4."InDate"
ORDER BY
T1."ItmsGrpNam";
Es lo que podría opinar.
Saludines