奇怪的ORDER BY要求

时间:2014-12-18 14:39:48

标签: sql oracle

我有一个包含多个列的数据集...
一列是具有重复值的主分组列,另一列是具有布尔值(1,0)的NUMBER:

grp bool
--- ----
A   1
A   1
A   0
A   0
B   1
B   1
B   1
B   0   
C   0

等。当然我可以通过grp,bool订购以获得上面的列表。我想要的是让这个列表首先由grp命令,但是然后尽可能使bool替代值...如下所示:

grp bool
--- ----
A   1
A   0
A   1
A   0
B   1
B   0
B   1
B   1   
C   0

1 个答案:

答案 0 :(得分:6)

您可以使用row_number()为每个grp中的每个布尔值分配顺序值。然后使用此顺序值进行排序:

select grp, bool
from (select d.*, row_number() over (partition by grp, bool order by grp) as seqnum
      from dataset d
     ) d
order by grp, seqnum, bool desc;