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.CardCode
或 join OCRD on OINV.CardCode
,如果需要,从 OCRD
.
获取名称
此外,如果您按价格订购,您只能获得最低价格,而不会获得最新价格,因此如果您要订购,请前往 OINV.DocDate DESC
或 OINV.DocEntry DESC
获取价格按日期或按添加文档最新。
您好,我从(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.CardCode
或 join OCRD on OINV.CardCode
,如果需要,从 OCRD
.
此外,如果您按价格订购,您只能获得最低价格,而不会获得最新价格,因此如果您要订购,请前往 OINV.DocDate DESC
或 OINV.DocEntry DESC
获取价格按日期或按添加文档最新。