SQL ORDER BY序列列然后是组中的所有记录,然后恢复下一个序列

时间:2016-06-23 20:19:05

标签: sql sql-server sql-server-2012 sql-order-by

我在表(SEQ,GROUP_CODE)中有这两列,其中包含以下数据(示例):

SEQ, GROUP_CODE
---------------    
1, 2
2, 2
3, 2
4, 5
5, 2
6, 3
7, 5

我需要这样排序:

SEQ, GROUP_CODE
---------------    
1, 2
2, 2
3, 2
5, 2
4, 5
7, 5
6, 3

基本上,使用序列开始排序和"排水"所有组记录,然后在排空其组之前转到下一个序列,依此类推。我知道我可以使用游标使用存储过程执行此操作,但是想知道是否可以使用ORDER BY完成此操作。

1 个答案:

答案 0 :(得分:3)

您可以在order by中使用窗口函数。所以:

order by min(seq) over (partition by group_code),
      seq