Я намагаюся сортувати за кількома стовпцями як у SQL, так і в різних напрямках. column1
буде відсортовано по убуванню та column2
зростанню.
Як я можу це зробити?
Я намагаюся сортувати за кількома стовпцями як у SQL, так і в різних напрямках. column1
буде відсортовано по убуванню та column2
зростанню.
Як я можу це зробити?
Відповіді:
ORDER BY column1 DESC, column2
Це сортує все за column1
(спаданням) спочатку, а потім column2
(за зростанням, що є за замовчуванням), коли column1
поля для двох або більше рядків рівні.
column1
спочатку, а потім, 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
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Чи є спосіб, що ми можемо це подолати?
FirstName, LastName
записів з чіткими ознакамиYearOfBirth
Упорядкування декількох стовпців залежить від відповідних значень обох стовпців: Ось мій приклад таблиці, де є два стовпчики з іменами Alphabets and Numbers, а значення цих двох стовпців - порядки asc та desc .
Тепер я виконую Order By у цих двох стовпцях, виконуючи команду нижче:
Тепер знову вставляю нові значення в ці два стовпці, де значення алфавіту в порядку ASC :
і стовпці в таблиці Приклад виглядають приблизно так. Тепер знову виконайте ту саму операцію:
Ви можете бачити, що значення в першому стовпці знаходяться в порядку desc, але другий стовпець не в порядку ASC.
(g, 10),(g,12)
. Потім запустіть запит на замовлення, ви отримаєте другий стовпець як ASC
замовлення (це означаєg-10,g-11,g-12)
Ви можете використовувати кілька замовлень у кількох умовах,
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