ЗАКАЗАТЬ с помощью Case-Statement DESC - PullRequest
6 голосов
/ 07 июля 2011
  • Как ORDER BY с CASE -Statement
    • первая группа: нулевые значения в столбце даты Col1, отсортированные по столбцу даты Col2 DESC
    • вторая группа: ненулевые значения в столбце даты- Col1, отсортированные по Col1 DESC

Я пробовал следующее:

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 NULL then 1 end, Table1.Col1 DESC

Но порядок сортировки неправильный, сначала значения NOT NULL (сортируются по Col2 вместо Col1). Я думаю, что пропустил детали.

Ответы [ 2 ]

7 голосов
/ 07 июля 2011
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
4 голосов
/ 07 июля 2011

Это должно сработать - просто сделайте первый столбец 0 или 1 в зависимости от того, является ли он нулевым или нет:

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
...