SQL Server:选择具有每个部分的最新日期的行

时间:2013-12-15 00:02:43

标签: sql-server date distinct

我只是在学习SQL,因此我有点努力产生我想要的输出。

假设我有一个如下表所示的表X:

-------Date ------- Part ------- Value

01-01-2005           A           200

01-01-2006           A           100

01-01-2007           A           300

02-02-2010           B           450

02-02-2011           B           320

从X我想得到这些:

-------Date ------- Part ------- Value

01-01-2007           A           300

02-02-2011           B           320

基本上我想做的是为每个不同的部分只获得一条记录 - 具有最新日期的记录。值列需要保留在结果中!

我该怎么做(假设有可能)?我很感激任何帮助。

1 个答案:

答案 0 :(得分:2)

;WITH LatestRecords
AS
  (
   SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY PART ORDER BY [Date] DESC)
   FROM TABLEX
  )
SELECT * FROM LatestRecords
WHERE rn = 1