我有一个场景,其中我的表中有三列。 ID(字符串),Desc(字符串)TerminationDate,上次更新日期(时间)。 没有主键,因此可能有多个行具有相同的数据集,但LastUpdate Date将始终不同。 我需要写一个SP,其中我需要获得最新的修改结果(ID,Desc,终止日期)。请参阅下面的示例
ID Desc TerminationDate LastUpdtDt
A test 01-01-2013 01-01-2013
A test1 01-03-2013 25-01-2013
A test 01-01-2013 26-03-2013
B test 01-01-2011 01-01-2013
The result i shuld get is
A test 01-01-2013 26-03-2013
B test 01-01-2011 01-01-2013
如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
SELECT ID, [DESC], TerminationDate, LastUpdtDt
FROM
(
SELECT ID, [DESC], TerminationDate, LastUpdtDt,
ROW_NUMBER() OVER(PARTITION BY ID
ORDER BY LastUpdtDt DESC) rn
FROM TableName
) ss
WHERE rn = 1
答案 1 :(得分:1)
您可以使用子查询返回带有max(LastUpdtDt)
的行:
select t1.id,
t1.[desc],
t1.terminationdate,
t1.LastUpdtDt
from yt t1
inner join
(
select max(LastUpdtDt) LastUpdtDt, id
from yt
group by id
) t2
on t1.id = t2.id
and t1.LastUpdtDt = t2.LastUpdtDt;
答案 2 :(得分:0)
SELECT ID , DESC , TERMINATION_DATE , LAST_UPDATE FROM ( SELECT ID , DESC , TERMINATION_DATE , LAST_UPDATE , ROW_NUMBER() OVER ( PARTITION BY ID ORDER BY LAST_UPDATE DESC ) SERIAL_ORDER FROM LAST_UPDATE ) B WHERE SERIAL_ORDER = 1