Query ultimo precio documento de pedido

Como están
Estoy haciendo un Query para tomar el ultimo precio de los artículos en las ordenes de compra, por ahora tengo este código.

SELECT  P1."ItemCode", P1."PriceBefDi", MAX( P0."DocDate" )
FROM OPOR P0  
INNER JOIN POR1 P1 ON P0."DocEntry" = P1."DocEntry" 
WHERE P1."WhsCode" = '150' 
GROUP BY P1."ItemCode" , P1."PriceBefDi"
ORDER BY P1."ItemCode"

El problema es que al tener el precio unitario en el select debo colocarlo también en el group by, dado esto, esta tomando todos los precios diferentes entonces una referencia puede estar saliendo varias veces…

La idea es tomar el ultimo precio de compra, intenté agregando la hora pero el resultado es el mismo, sale varias veces el mismo registro con precio unitario diferente, espero me puedan ayudar.

Hola @camilog, yo lo primero que haría es consultar cual es la última orden de compra de cada item, obtengo esto en una subconsulta de donde traigo el DocEntry y el ItemCode, con esta información ya puedo consultar el precio del Item, en ese documento.
Dejo el código de como lo hice por si te sirve.

SELECT TB2.ItemCode, TB1.PriceBefDi 
FROM POR1 AS TB1 
INNER JOIN (
SELECT TA2.ItemCode, MAX(TA1.DocEntry) AS DocEntry
FROM OPOR AS TA1
INNER JOIN POR1 AS TA2 ON TA2.DocEntry = TA1.DocEntry
WHERE TA2.WhsCode = '150'
GROUP BY TA2.ItemCode) AS TB2 ON TB2.DocEntry = TB1.DocEntry AND TB2.ItemCode = TB1.ItemCode
ORDER BY TB2.ItemCode

Espero te sirva esta solución

3 Me gusta

Como estás @fruizc mil gracias tu idea funciono muy bien, le agregue las comillas y me quedo funcionando perfectamente.

SELECT TB2."ItemCode", TB1."PriceBefDi"
FROM POR1 AS TB1 
INNER JOIN 
(
SELECT 
TA2."ItemCode",
MAX(TA1."DocEntry") AS "DocEntry"

FROM OPOR AS TA1
INNER JOIN POR1 AS TA2 ON TA2."DocEntry" = TA1."DocEntry"

WHERE TA2."WhsCode" = '150'
GROUP BY TA2."ItemCode") AS TB2 ON TB2."DocEntry" = TB1."DocEntry" AND TB2."ItemCode" = TB1."ItemCode"

ORDER BY TB2."ItemCode"
1 me gusta