nbi*_*son 7 t-sql sql-server-2008
我是SQL的新手,并且正在努力为我的MAX情况找到一个可行的解决方案.
我目前有一个表格如下:
ID Date Version
001 2010-11-17 2
001 2010-12-01 3
002 2011-01-11 1
002 2011-05-05 2
Run Code Online (Sandbox Code Playgroud)
我想要的结果很简单:
ID Date Version
001 2010-12-01 3
002 2011-05-05 2
Run Code Online (Sandbox Code Playgroud)
我不能在日期使用MAX和GROUP BY,因为Date不明显.
And*_*mar 11
你可以用row_number它,比如:
select *
from (
select row_number() OVER(partition by id order by version desc) as rn
, *
from YourTable
) as SubQueryAlias
where rn = 1
Run Code Online (Sandbox Code Playgroud)
这应该做的工作:
SELECT ID,
Date,
Version
FROM YourTable
INNER JOIN
(
SELECT ID,
Max(Version)
FROM YourTable
GROUP BY ID
) AS x
ON YourTable.ID = x.ID
AND YourTable.Version = x.Version
Run Code Online (Sandbox Code Playgroud)