Sql server 选择最近的交易公关项目
在Microsoft SQL数据库中,我正在寻找查找最新salesdate和客户pr项目的方法。 如果两个顾客买了相同的商品,我只想要其中一个顾客 在我的查询中,每个项目应该只显示一次 以下是我的数据示例:Sql server 选择最近的交易公关项目,sql-server,Sql Server,在Microsoft SQL数据库中,我正在寻找查找最新salesdate和客户pr项目的方法。 如果两个顾客买了相同的商品,我只想要其中一个顾客 在我的查询中,每个项目应该只显示一次 以下是我的数据示例: Rownumber Item Customer Date QTY 1 10 2000 01/01/2014 5 2 10 3000 02/01
Rownumber Item Customer Date QTY
1 10 2000 01/01/2014 5
2 10 3000 02/01/2014 6
3 10 2000 02/01/2014 4
4 20 4000 10/01/2014 1
5 20 4000 01/01/2014 8
6 30 5000 08/01/2014 5
7 40 2000 07/01/2014 10
我的结果应该是这样的
2 10 3000 02/01/2014 6
4 20 4000 10/01/2014 1
6 30 5000 08/01/2014 5
7 40 2000 07/01/2014 10
它可以是第三行,而不是第二行,因为它们在同一日期。我只需要一个
我猜这是一个等级函数,但我不能让它工作。使用CTE
;WITH Latest
AS
(
SELECT *,
rn = ROW_NUMBER() OVER (PARTITION BY Customer ORDER BY [Date] DESC)
FROM TABLE
)
SELECT * FROM Latest
WHERE rn = 1
使用子查询
SELECT *
FROM
(
SELECT *,
rn = ROW_NUMBER() OVER (PARTITION BY Customer ORDER BY [Date] DESC)
FROM TABLE
)Q
WHERE rn = 1
另外,如果该日期存在多个交易,请将行号()的“订单依据”部分更改为“代码>订单依据[日期]说明,行号说明”,以确保获得该日期的最新交易。如果您希望每个客户和项目都有一行,请将分区按节更改为
分区按客户、项目
。