如何对Oracle SQL进行排序
请告诉我这个问题如何对Oracle SQL进行排序,oracle,sorting,Oracle,Sorting,请告诉我这个问题 label | code | datetime | A | 1 | 11/20 00:00| A | 0 | 11/20 00:05| A | 1 | 11/20 00:06| A | 1 | 11/20 00:07| A | 0 | 11/20 00
label | code | datetime |
A | 1 | 11/20 00:00|
A | 0 | 11/20 00:05|
A | 1 | 11/20 00:06|
A | 1 | 11/20 00:07|
A | 0 | 11/20 00:10|
A | 0 | 11/20 00:12|
我想这样分类
label | code | datetime |
A | 1 | 11/20 00:00|
A | 0 | 11/20 00:05|
A | 1 | 11/20 00:06|
A | 0 | 11/20 00:10|
A | 1 | 11/20 00:07|
A | 0 | 11/20 00:12|
键是code和datetime列,
我想将代码列1,0,1,0对齐。首先使用
行编号
函数添加代码的索引,该函数识别零和一次的相对顺序
select code,
row_number() over (partition by code order by date_time) code_idx,
date_time
from tab
CODE CODE_IDX DATE_TIME
---------- ---------- -------------------
0 1 13.11.2020 00:00:05
0 2 13.11.2020 00:00:12
0 3 13.11.2020 00:00:15
1 1 13.11.2020 00:00:00
1 2 13.11.2020 00:00:06
1 3 13.11.2020 00:00:07
1 4 13.11.2020 00:00:10
然后首先对索引进行简单排序,然后对代码进行简单排序
with tab2 as (
select code,
row_number() over (partition by code order by date_time) code_idx,
date_time
from tab)
select
code, date_time
from tab2
order by code_idx, code desc;
CODE DATE_TIME
---------- -------------------
1 13.11.2020 00:00:00
0 13.11.2020 00:00:05
1 13.11.2020 00:00:06
0 13.11.2020 00:00:12
1 13.11.2020 00:00:07
0 13.11.2020 00:00:15
1 13.11.2020 00:00:10
如果您有不同的0
和1
(计数中有一个以上的差异),这当然会失败。谢谢您的回答!我将立即尝试此方法:)