Sto cercando di ordinare per più colonne in SQL e in diverse direzioni. column1
sarebbe ordinata decrescente e column2
crescente.
Come posso fare questo?
ORDER BY column1 DESC, column2
Questo ordina tutto per column1
(discendente) prima e poi per column2
(crescente, che è l’impostazione predefinita) ogni volta che i campi colonna1 per due o più righe sono uguali.
Le altre risposte mancano di un esempio concreto, quindi ecco qui:
Data la seguente tabella Persone :
FirstName | LastName | YearOfBirth ---------------------------------------- Thomas | Alva Edison | 1847 Benjamin | Franklin | 1706 Thomas | More | 1478 Thomas | Jefferson | 1826
Se esegui la query qui sotto:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Il set di risultati sarà simile a questo:
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
L’ordinamento di più colonne dipende dai valori corrispondenti di entrambe le colonne: Ecco l’esempio di tabella in cui due colonne sono denominate con Alfabeti e Numeri e i valori in queste due colonne sono ordini asc e desc .
Ora eseguo Order By in queste due colonne eseguendo il comando seguente:
Ora di nuovo inserisco nuovi valori in queste due colonne, dove il valore dell’alfabeto in ordine ASC :
e le colonne nella tabella di esempio hanno questo aspetto. Ora esegui nuovamente la stessa operazione:
È ansible visualizzare i valori nella prima colonna in ordine decrescente, ma la seconda colonna non è in ordine ASC.
È ansible utilizzare più ordini su più condizioni,
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