-3

我有一个格式如下的表:

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

日期不一定是按顺序排列的。有人可以给我一个关于如何做到这一点的提示吗?

谢谢!

4

2 回答 2

4
select id, max([Date A]) as 'MaxDate'
from table
group by id
于 2013-05-14T13:41:37.143 回答
1

我会为此使用窗口函数。

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

Windowing Functions 的好处是您不必对函数中不需要的东西进行 GROUP BY 来获得输出结果。他们也非常快。

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

于 2013-05-14T13:48:05.000 回答