SQL:日期两个单独行之间的差异

时间:2013-05-14 13:39:37

标签: sql sql-server

我有一个表格,格式如下:

id  |  Date A
----------------
1   |  05/02/12
1   |  05/05/12
1   |  05/08/12
3   |  05/01/12
3   |  05/05/12
3   |  05/06/12

现在,我想按ID获取每个ID和组的最新(最长)日期。 所以我的SQL输出应该是:

id  |  Date A
----------------
1   |  05/08/12
3   |  05/06/12

日期不一定是订单。 有人能给我一个如何做到这一点的暗示吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

select id, max([Date A]) as 'MaxDate'
from table
group by id

答案 1 :(得分:1)

我会使用窗口函数。

SELECT DISTINCT id, MAX([Date A]) OVER (PARTITION BY id) AS 'Date A'
  FROM table

窗口函数的好处在于,您不需要在函数中不需要GROUP BY来获取输出结果。他们也很快。

以下是BOL:http://msdn.microsoft.com/en-us/library/ms189461.aspx 以下是关于窗口函数的更多信息:http://en.wikipedia.org/wiki/Select_(SQL)#Window_function