Benutzer mit den meisten Antworten
Daten absteigend (DESC) sortieren

Frage
-
Hallo,
ich möchte gerne meine Daten absteigend (DESC) sortieren.
Leider macht das SQL nicht richtig.
Da mehrere Spalten abgefragt werden.
Ich möchte die höchsten Werte zuerst angezeigt bekommen.
Kann mir jemand sagen, wie das geht?
Danke.
Gruß Klaus
Antworten
-
Hallo Klaus,
dann ist deine Zahl eigentlich gar keine Zahl, sondern ein numerischer Wert in einem String.
Schau mal in die Tabellendefinition. Die Spalte wird sehr wahrscheinlich als varchar, nvarchar, ... deklariert sein.
Wenn da nur Zahlen (und ggfs. NULL) enthalten sein sollen, stell den Datentyp entsprechend auf int, ... um (der genaue Datentyp hängt davon ab, ob Kommazahlen erlaubt sind oder nicht und falls ja, mit welcher Genauigkeit, ...)
Dann klappt es auch mit der Sortierung.
Kannst Du den Datentyp nicht ändern, es ist aber dennoch sichergestellt, dass nur Ganzzahlen enthalten sind, kannst Du das auch so machen:
SELECT ... FROM Tabelle ORDER BY CONVERT( int, SpalteX ) DESC
Das sollte aber nur die Notlösung sein, da das bei vielen Datensätzen entsprechend Performance kostet.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert BlauesBlatt Mittwoch, 30. Juli 2014 22:03
Alle Antworten
-
Hallo Klaus,
"die höchsten Werte" gibt es so pauschal nicht. Pro Spalte gibt es größte/kleinste, höchste/niedrigste Werte. Daher wirst Du dir schon überlegen müssen, nach welchen Spalten Du sortieren willst.
Du kannst problemlos nach mehreren Spalten sortieren.
SELECT Spalte1, Spalte2, Spalte3 FROM Tabelle ORDER BY Spalte1 DESC, Spalte2 DESC, Spalte3 DESC
(SQL macht das aber schon richtig, deine Erwartungen sind evtl. aber nicht mit SQL machbar).
Wenn das nicht das gewünschte Ergebnis bringt, poste bitte mal die Struktur deiner Tabelle, einige Beispielddaten und das gewünschte Ergebnis.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Klaus,
dann ist deine Zahl eigentlich gar keine Zahl, sondern ein numerischer Wert in einem String.
Schau mal in die Tabellendefinition. Die Spalte wird sehr wahrscheinlich als varchar, nvarchar, ... deklariert sein.
Wenn da nur Zahlen (und ggfs. NULL) enthalten sein sollen, stell den Datentyp entsprechend auf int, ... um (der genaue Datentyp hängt davon ab, ob Kommazahlen erlaubt sind oder nicht und falls ja, mit welcher Genauigkeit, ...)
Dann klappt es auch mit der Sortierung.
Kannst Du den Datentyp nicht ändern, es ist aber dennoch sichergestellt, dass nur Ganzzahlen enthalten sind, kannst Du das auch so machen:
SELECT ... FROM Tabelle ORDER BY CONVERT( int, SpalteX ) DESC
Das sollte aber nur die Notlösung sein, da das bei vielen Datensätzen entsprechend Performance kostet.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert BlauesBlatt Mittwoch, 30. Juli 2014 22:03