如果列相同,则SQL select top

Ash*_*hin 1 sql sql-server sql-server-2012

如果我有这样的表格:

Id  StateId Name
1   1   a
2   2   b
3   1   c
4   1   d
5   3   e
6   2   f
Run Code Online (Sandbox Code Playgroud)

我想选择如下:

Id  StateId Name
4   1   d
5   3   e
6   2   f
Run Code Online (Sandbox Code Playgroud)

例如,Ids 1,3,4具有stateid 1.因此选择具有最大Id的行,即4.

Est*_*sty 8

; WITH CTE AS
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY STATEID ORDER BY ID DESC) AS RN
)SELECT ID, STATEID, NAME FROM CTE WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)