SQL ORDER BY 一个序列列,然后是组中的所有记录,然后恢复下一个序列
SQL ORDER BY a sequence column then all records in group, then resume next sequence
我在 table(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
基本上,使用序列开始排序和 "drain" 所有组记录,然后再移动到下一个序列,然后排空其组等等。我知道我可以通过使用游标的存储过程来做到这一点,但我想看看这是否可以通过 ORDER BY
来完成。
您可以在 order by
中使用 window 函数。所以:
order by min(seq) over (partition by group_code),
seq
我在 table(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
基本上,使用序列开始排序和 "drain" 所有组记录,然后再移动到下一个序列,然后排空其组等等。我知道我可以通过使用游标的存储过程来做到这一点,但我想看看这是否可以通过 ORDER BY
来完成。
您可以在 order by
中使用 window 函数。所以:
order by min(seq) over (partition by group_code),
seq