我在以下表单的SQL Server数据库中有一个表,根据id
排序。
id group
1 10
17 10
24 10
2 20
16 20
72 20
104 20
8 30
9 30
我想选择根据行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的人都无法使用它。有没有人有建议?
答案 0 :(得分: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