Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对Oracle SQL进行排序_Oracle_Sorting - Fatal编程技术网

如何对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
(计数中有一个以上的差异),这当然会失败。

谢谢您的回答!我将立即尝试此方法:)