Sql server 选择最近的交易公关项目

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

在Microsoft SQL数据库中,我正在寻找查找最新salesdate和客户pr项目的方法。 如果两个顾客买了相同的商品,我只想要其中一个顾客

在我的查询中,每个项目应该只显示一次

以下是我的数据示例:

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

另外,如果该日期存在多个交易,请将行号()的“订单依据”部分更改为“代码>订单依据[日期]说明,行号说明”,以确保获得该日期的最新交易。如果您希望每个客户和项目都有一行,请将分区按节更改为
分区按客户、项目