ORDER BY with Case-Statement DESC
- How to
ORDER BY
with aCASE
-Statement- first group: null values in date-column
Col1
sorted by date-columnCol2 DESC
- second group: not-null values in date-column-
Col1
sorted byCol1 DESC
- first group: null values in date-column
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
精彩评论