我有一个包含多个列的数据集...
一列是具有重复值的主分组列,另一列是具有布尔值(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
答案 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;