选择最近的交易pr项目

时间:2014-03-05 22:38:04

标签: sql-server

在Microsoft SQL数据库上,我正在寻找最新的salesdate和customer 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

而不是第2行,它可能是第三行,因为它们在同一天。我只需要其中一个。

我猜它是一些RANK功能,但我不能让它工作。

1 个答案:

答案 0 :(得分:1)

使用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