SQL 为客户查找商品的最新销售价格的查询

SQL query for finding the latest sale price for an item for a customer

您好,我从(SAP Business One 系统的)数据库生成了以下数据集

我使用以下查询生成了此结果:

SELECT T1.[ItemCode], T0.[DocNum], T1.[Price], T0.[CardName] 
FROM OINV T0  INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry]
GROUP BY T1.[ItemCode], T1.[Price], T0.[CardName],T0.[DocNum]

我想为每个客户获取每件商品的最新价格。 谁能帮我解决这个问题? 提前致谢

您可以使用row_number()

select * from
(
SELECT T1.[ItemCode], T0.[DocNum], T1.[Price], T0.[CardName],
row_number() over(partition by T0.[CardName],T1.[ItemCode] order by T1.[Price] desc) as rn
FROM OINV T0  INNER JOIN INV1 T1 ON T0.[DocEntry] = T1.[DocEntry]
)A where rn=1

您不应使用 OINV.CardName,因为如果您在 BP-masterdata 中更改名称,则 OINV-table 中的同一客户可能有不同的名片名称,或者多个业务伙伴的名称相同。使用 T0.CardCodejoin OCRD on OINV.CardCode,如果需要,从 OCRD.

获取名称

此外,如果您按价格订购,您只能获得最低价格,而不会获得最新价格,因此如果您要订购,请前往 OINV.DocDate DESCOINV.DocEntry DESC 获取价格按日期或按添加文档最新。