SQL如果有值,则按列排序

时间:2016-03-17 17:11:05

标签: sql oracle sql-order-by

我有下表:

对象(o)

id    name              date_completed
----------------------------------------
1     Computer          2016-02-26
2     Desk              NULL
3     Curtain           2016-02-25

我尝试使用此查询:

SELECT * FROM objects ORDER BY date_completed NULLS FIRST, name

正如预期的那样,我得到了这个结果:

id    name              date_completed
----------------------------------------
2     Desk              NULL
3     Curtain           2016-02-25
1     Computer          2016-02-26

我希望对结果进行排序,使其不按实际日期排序,而是将NULL中的date_completed放在顶部,并按名称排序。然后将值为date_completed的值放在底部,并按名称排序。

基本上这就是我想要的:

id    name              date_completed
----------------------------------------
2     Desk              NULL
1     Computer          2016-02-26
3     Curtain           2016-02-25

1 个答案:

答案 0 :(得分:5)

SELECT * FROM objects 
ORDER BY (case when date_completed is null then 1 else 2 end),name