开发者

ORDER BY with Case-Statement DESC

  • How to ORDER BY with a CASE-Statement
    • first group: null values in date-column Col1 sorted by date-column Col2 DESC
    • second group: not-null values in date-column-Col1 sorted by Col1 DESC

I've tried following:

SELECT columns FROM tables WHERE condition
ORDER BY 
    case when Table1.Col1 IS NULL     then 0 end, Table2.Col2 DESC,
    case when Table1.Col1 IS NOT N开发者_如何学PythonULL then 1 end, Table1.Col1 DESC

But the sort order is wrong, the NOT NULL values are first(sorted by Col2 instead of Col1). I think i've missed a detail.


SELECT columns FROM tables 
WHERE condition 
ORDER BY      
   case when Table1.Col1 IS NULL then 0 else 1 end ASC      
   ,case when Table1.Col1 IS NULL then Table2.Col2 else Table1.Col1 end DESC


This should work - just make the first column 0 or 1 based on whether it's null or not:

SELECT columns FROM tables WHERE condition
ORDER BY 
    case 
        when Table1.Col1 IS NULL     then 0 
                                     else 1
    end,
    case
        when Table1.Col1 IS NULL     then Table1.Col2
                                     else Table1.Col1
    end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜