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

时间:2021-03-02 05:56:11

标签: sql sapb1

嗨,我有从(SAP Business One 系统的)数据库生成的以下数据集

Dataset

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

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]

我想为每个客户获取每件商品的最新价格。 任何人都可以帮助我吗? 提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用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

答案 1 :(得分:0)

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

另外,如果你按价格下单,你只会得到最低的而不是最新的价格,所以如果你想下单,去OINV.DocDate DESCOINV.DocEntry DESC得到最新的价格日期或添加的文档。

相关问题