Случай по порядку несколькими столбцами
-
18-09-2019 - |
Вопрос
Используя блок. [status] ASC, [date] DESC
или просто [date] DESC
.
Я знаю только как использовать один столбец:
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0
THEN R.[date] END DESC,
CASE WHEN @flag = 1
THEN R.[status] END ASC
Как использовать оба столбца во втором случае?
Решение
- Если ваш флаг равен 0, то мы закажем (null, r.date desc).
- Если нет, мы заказываем (R.Status, R.Date Desc)
Используйте выражение корпуса для «Проектирования» нового значения для заказа.
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0 THEN r.Status ELSE null END,
r.[date] desc
Другие советы
Как правило, для положения условного упорядочения, вы просто повторяете оператор дела.
SELECT *
FROM table
ORDER BY
CASE WHEN @flag = 0 THEN R.[date] END DESC,
CASE WHEN @flag = 0 THEN R.[somethingelse] END ASC,
CASE WHEN @flag = 1 THEN R.[status] END ASC
;
Но в вашем случае перекрытие «даты» означает, что вы можете упростить его, как комментарий Дэвида Б.
Не связан с StackOverflow