1

我有一个场景,其中我的表中有三列。ID(字符串),Desc(字符串)终止日期,上次更新日期(时间)。没有主键,因此可能有多行具有相同的数据集,但 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

如果您需要更多信息,请告诉我。

4

3 回答 3

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
于 2013-05-22T09:24:14.520 回答
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;

请参阅SQL Fiddle with Demo

于 2013-05-22T11:12:21.063 回答
0

选择 ID ,
        ,
        终止日期 ,
        最后更新
来自(选择 ID,
                    ,
                    终止日期 ,
                    最后更新 ,
                    ROW_NUMBER() OVER (PARTITION BY ID ORDER BY LAST_UPDATE DESC) SERIAL_ORDER
          FROM LAST_UPDATE
        ) 乙
SERIAL_ORDER = 1

于 2013-05-22T13:41:48.563 回答