在组中添加订单并标记行是否是其组中的最后一行

时间:2017-01-19 17:05:12

标签: sql sql-server

我在以下表单的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的人都无法使用它。有没有人有建议?

1 个答案:

答案 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