wake-up-neo.net

SQL-Mehrspaltenreihenfolge

Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1 wird absteigend und column2 aufsteigend sortiert.

Wie kann ich das machen?

ORDER BY column1 DESC, column2

Dies sortiert alles zuerst nach column1 (absteigend) und dann nach column2 (aufsteigend, dies ist die Standardeinstellung), wenn die Felder column1 für zwei oder mehr Zeilen gleich sind.

928

Den anderen Antworten fehlt ein konkretes Beispiel. Hier ist es also:

Ausgehend von der folgenden Tabelle People:

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826

Wenn Sie die folgende Abfrage ausführen:

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

Die Ergebnismenge sieht folgendermaßen aus:

 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
131
Quassnoi

Die Reihenfolge mehrerer Spalten hängt von den entsprechenden Werten beider Spalten ab: Hier ist mein Tabellenbeispiel, in dem zwei Spalten mit Alphabeten und Zahlen benannt sind und die Werte in diesen beiden Spalten asc und absteigende Reihenfolge.

enter image description here

Jetzt führe ich Order By in diesen beiden Spalten aus, indem ich den folgenden Befehl ausführe:

enter image description here

Jetzt füge ich wieder neue Werte in diese beiden Spalten ein, wobei der Alphabet-Wert in AUF Reihenfolge steht:

enter image description here

und die Spalten in der Beispieltabelle sehen so aus. Führen Sie nun erneut die gleiche Operation aus:

enter image description here

Sie können sehen, dass die Werte in der ersten Spalte in absteigender Reihenfolge sind, die zweite Spalte jedoch nicht in ASC-Reihenfolge.

14
Jason Clark

Sie können Mehrfachbestellungen unter mehreren Bedingungen verwenden.

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 
4
atik sarker