Reporte query inventario

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