Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
使用case使用多列进行SQL排序_Sql_Oracle_Sql Order By - Fatal编程技术网

使用case使用多列进行SQL排序

使用case使用多列进行SQL排序,sql,oracle,sql-order-by,Sql,Oracle,Sql Order By,表: 我试图实现这一点,检索记录的最新完成日期,如果为空,则为最近的计划日期,如果检索到多个记录,则使用更高的recordId NUMBER DETAIL_ID, Date schdeuledDate; Date completedDate; NUMBER recordId; 但这是我从上面的查询中得到的 SELECT DETAIL_ID,completedDate,schdeuledDate,recordId FROM table ORDER BY CASE completedDate WH

表:

我试图实现这一点,检索记录的最新完成日期,如果为空,则为最近的计划日期,如果检索到多个记录,则使用更高的recordId

NUMBER DETAIL_ID,
Date schdeuledDate;
Date completedDate;
NUMBER recordId;
但这是我从上面的查询中得到的

SELECT DETAIL_ID,completedDate,schdeuledDate,recordId FROM table
ORDER BY CASE completedDate WHEN NULL THEN schdeuledDate ELSE completedDate END,DETAIL_ID,recordId DESC;
预期:

Detail_ID  compdate     schdate    recordId
318        08-AUG-16    15-AUG-16   22342
318        06-JUN-18    22-AUG-18   26219
318        22-AUG-17    08-AUG-17   26218
418        null         08-AUG-17   26450
418        22-AUG-17    22-AUG-18   26879
418        22-AUG-17    22-AUG-18   26779 

我想您想要
行号()

318        06-JUN-18    22-AUG-18   26219
418        22-AUG-17    22-AUG-18   26879
select t.*
from (select t.*,
             row_number() over (partition by detail_id
                                order by coalesce(schdeuledDate, completedDate) desc, recordId desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;