Порядок SQL по двум разным (возможно, нулевым) столбцам - PullRequest
10 голосов
/ 12 марта 2012

У меня есть таблица с тремя столбцами;первый столбец содержит идентификаторы, а два других столбца содержат даты (где не более одного - ноль, но я не думаю, что это должно повлиять на что-либо).Как мне поступить с заказом идентификаторов, исходя из того, какая дата больше?Я пробовал

ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END

, но это не сработало.Может кто-нибудь мне помочь?Кроме того, все подобные проблемы, которые я видел в других постах, имеют такую ​​проблему, что запрос сортирует результаты по первому столбцу , а затем, если первый столбец равен нулю , по второму столбцу.Должен ли я сначала определить каждое нулевое значение?Я создаю эту таблицу с помощью полного внешнего соединения, так что это будет совершенно другой вопрос, поэтому, надеюсь, это можно сделать с нулевыми значениями.

Ответы [ 2 ]

15 голосов
/ 12 марта 2012

Я полагаю, что ваша проблема связана с ошибкой сравнения, когда любой из столбцов равен NULL.Итак, вам, вероятно, нужно:

 ORDER BY CASE
          WHEN date1 IS NULL THEN date2
          WHEN date2 IS NULL THEN date1
          WHEN date1 > date2 THEN date1
          ELSE                    date2
          END
0 голосов
/ 12 марта 2012

Попробуйте ...

SELECT MAX(date1,date2) date FROM table ORDER BY date;
...