2017-01-19 5 views
2

次の形式のSQL Serverデータベースにテーブルを持っています(idに従ってソート)。グループ内で順序を追加し、行がそのグループの最後であるかどうかを確認します。

id  group 
1  10 
17  10 
24  10 
2  20 
16  20 
72  20 
104 20 
8  30 
9  30 

I行groupに従ってグループ化すべての行を選択し、このテーブルに以下の情報を追加したい:順序を(ソートされたように)グループ内で、行がグループ内の最後の行であるかどうか。言い換えれば、これに似た何か:

id  group order last 
1  10  1  0 
17  10  2  0 
24  10  3  1 
2  20  1  0 
16  20  2  0 
72  20  3  0 
104 20  4  1 
8  30  1  0 
9  30  2  1 

私はROW_NUMBERと周りいじる試してみたが、私は、SQL Serverと経験しているすべてではないと私はそれを動作させることはできません。誰にでも提案はありますか?

答えて

4

使用ROW_NUMBERウィンドウ関数

select id,[group], 
     row_number()over(partition by [group] order by id) as [order], 
     case when row_number()over(partition by [group] order by id desc) = 1 then 1 else 0 end as Last 
From yourtable 
関連する問題