Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 - Fatal编程技术网

如何使用Oracle sql将第一个日期放在最上面,其余日期按相反顺序排列?

如何使用Oracle sql将第一个日期放在最上面,其余日期按相反顺序排列?,oracle,Oracle,当我使用order by轻松获得这样的查询结果时 姓名|日期 Kev 2018/3/29 李2018/3/28 Mel 2018/3/27 菲奥娜2018/3/26 < BR> Jason 2018/3/25 但是现在我如何实现以下排序结果呢 姓名|日期 Jason 2018/3/25 Kev 2018/3/29 李2018/3/28 Mel 2018/3/27 菲奥娜2018/3/26 < P> min(dt)< /代码>是最早的日期。code>min(dt)over()是一个分析函数,它

当我使用order by轻松获得这样的查询结果时

姓名|日期
Kev 2018/3/29
李2018/3/28
Mel 2018/3/27
菲奥娜2018/3/26 < BR> Jason 2018/3/25

但是现在我如何实现以下排序结果呢

姓名|日期
Jason 2018/3/25
Kev 2018/3/29
李2018/3/28
Mel 2018/3/27
菲奥娜2018/3/26

< P> <代码> min(dt)< /代码>是最早的日期。code>min(dt)over()是一个分析函数,它计算最小日期,并将其作为“组合”列添加到查询中的每一行。然后,如果前两个参数相等,
decode
将生成
null
,反之则生成
dt
。我按照这个结果降序排列,首先使用
null
——因此最早的日期将显示在顶部,其他行按
dt
降序排列

create table t ( name varchar2(20), dt date );

insert into t
  select 'Jason', to_date('2018/3/25', 'yyyy/mm/dd') from dual union all
  select 'Kev'  , to_date('2018/3/29', 'yyyy/mm/dd') from dual union all
  select 'Lee'  , to_date('2018/3/28', 'yyyy/mm/dd') from dual union all
  select 'Mel'  , to_date('2018/3/27', 'yyyy/mm/dd') from dual union all
  select 'Fiona', to_date('2018/3/26', 'yyyy/mm/dd') from dual
;

commit;

alter session set nls_date_format = 'yyyy/mm/dd';

select   name, dt
from     t
order by decode(dt, min(dt) over (), null, dt) desc nulls first
;

NAME                 DT        
-------------------- ----------
Jason                2018/03/25
Kev                  2018/03/29
Lee                  2018/03/28
Mel                  2018/03/27
Fiona                2018/03/26

您的示例与标题不匹配。它不会把最后一行放在上面,而是放在第一行。其他行不是按顺序排列的,而是按降序排列的。请编辑标题或示例,使它们相互一致;但是你“想要达到”的结果仍然有第一个日期在上面,其余日期的顺序相反。那么标题错了?修起来这么难吗?我很尴尬。作为一个中国代码农民,英语真的是最大的短板,我总是一文不值。