0

次のデータがあります

Id , TagNo , Revision
100 , 20001 , A
101 , 20001 , B
102 , 20001 , C
103 , 20002 , B
104 , 20002 , A
105 , 20003 , B

リビジョンに B を渡す場合、次のレコードが必要です

101 , 20001 , B
103 , 20002 , B
105 , 20003 , B

リビジョンに A を渡す場合、次のレコードが必要です

100 , 20001 , A
104 , 20002 , A

リビジョンにCを渡すと、次の結果になります

102 , 20001 , C
103 , 20002 , B
105 , 20003 , B

私は TSQl でそれを作ることができませんでした。誰か助けてくれますか? ありがとうございました

4

3 に答える 3

2
with cte as (
    select
        Id, TagNo, Revision,
        row_number() over(partition by TagNo order by Revision desc) as rn
    from Table1
    where Revision <= @Revision
)
select Id, TagNo, Revision
from cte
where rn = 1

sql fiddle demo

于 2013-09-21T18:26:36.927 に答える