选择每个ID和日期只有一行

1 sql t-sql sql-server

我需要在SQL中做一些事情,我现在很困惑!

所以我有这样的事情:

idEvent   idService   dateCreated
-------   ---------   -----------
1         1           2012-01-01
2         1           2012-02-02
3         2           2012-01-01
4         2           2012-02-02
Run Code Online (Sandbox Code Playgroud)

idEvent是自动递增.

我需要得到的是每个最大的行(按顺序排列dateCreated DESC)idService.

所以我需要得到这个结果:

idEvent
-------
2
4
Run Code Online (Sandbox Code Playgroud)

Aar*_*and 7

您可以使用公用表表达式将"行号"应用于每个idService/dateCreated组合.您没有指定表名,因此您必须解决此问题.

;WITH x AS 
(
  SELECT idEvent, idService, dateCreated, rn = ROW_NUMBER() OVER 
    (PARTITION BY idService ORDER BY dateCreated DESC)
  FROM dbo.table_something_like_this
)
SELECT idEvent, idService, dateCreated
FROM x
WHERE rn = 1;
Run Code Online (Sandbox Code Playgroud)