Я пытаюсь сортировать по нескольким столбцам в SQL и в разных направлениях. column1
будет отсортировано по убыванию, а column2
- вверх.
Как я могу это сделать?
Я пытаюсь сортировать по нескольким столбцам в SQL и в разных направлениях. column1
будет отсортировано по убыванию, а column2
- вверх.
Как я могу это сделать?
ORDER BY column1 DESC, column2
Сначала сортируется все по column1
(убыв), а затем по column2
(по возрастанию, по умолчанию), когда поля column1
для двух строк равны.
В других ответах отсутствует конкретный пример, так что вот оно:
Учитывая следующую таблицу Люди:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Если вы выполните запрос ниже:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Результирующий набор будет выглядеть следующим образом:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
Порядок нескольких столбцов зависит от обоих значений столбца: Вот мой пример таблицы, где два столбца с именем с алфавитами и номерами, а значения в этих двух столбцах - орлы asc и desc.
Теперь я выполняю Заказ в этих двух столбцах, выполнив следующую команду:
Теперь снова я вставляю новые значения в эти два столбца, где значение алфавита в порядке ASC:
и столбцы в таблице Example выглядят следующим образом. Теперь снова выполните ту же операцию:
Вы можете видеть, что значения в первом столбце находятся в порядке desc, но второй столбец не находится в порядке ASC.
Вы можете использовать несколько заказов в нескольких условиях,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC