嗨,我有从(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]
我想为每个客户获取每件商品的最新价格。 任何人都可以帮助我吗? 提前致谢
答案 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.CardCode
或 join OCRD on OINV.CardCode
,如果需要,从 OCRD
获取名称。
另外,如果你按价格下单,你只会得到最低的而不是最新的价格,所以如果你想下单,去OINV.DocDate DESC
或OINV.DocEntry DESC
得到最新的价格日期或添加的文档。