SQL Max(日期)没有group by

时间:2015-12-04 18:04:26

标签: sql sql-server group-by max

说我有下表...

MemberID  ServDate
001       12-12-2015
001       12-13-2015
001       12-15-2015
002       11-30-2015
002       12-04-2015

我想让它看起来像这样......

MemberID  ServDate     LastServDate
001       12-12-2015   12-15-2015
001       12-13-2015   12-15-2015
001       12-15-2015   12-15-2015
002       11-30-2015   12-04-2015
002       12-04-2015   12-04-2015

我是否可以在不使用GROUP BY或嵌套查询的情况下执行此操作? (我正在处理一个非常大的数据库,而GROUP BY会大大减慢速度)

谢谢!

1 个答案:

答案 0 :(得分:7)

SELECT 
  MemberID, ServDate, 
  MAX(ServDate) OVER (PARTITION BY MemberID) AS LastServDate
FROM Table

标准SQL,因此适用于大多数现代RDBMS(包括SQL Server和Oracle)。

顺便提一下,

编辑,如果您想了解更多信息:MSDN ref. for OVER