# MSSQL: Zweithöchsten Wert ermitteln



## Cpukiller (8. März 2005)

Moin,
folgendes Problem:
Ich benötige den zweitgrößten Wert einer Spalte, nur wie kann ich diesen auslesen? MAX liefert ja nur den höchsten zurück und MAX - 1 haut nicht hin, da die Nummerierung nicht linear ist.
Mein Ansatz ist nun, mit TOP 2 mir die beiden größten Werte ausgeben zu lassen, und dann mit einer Schleife nur den zweiten Wert auszulesen... doch das ist doch etwas umständlich 
Kann man das noch irgendwie mit SQL lösen?


----------



## redlama (8. März 2005)

Also ich kenne mich zwar mit MS SQL nicht sonderlich aus, aber bei MySQL kann man nach Spalten sortieren.
Du könntest absteigend nach der gewünschten Spalte sortieren. Dann steht der höchte Wert an 1. und der zweithöchste an 2. Stelle.
Und dann gibt es bei MySQL noch einen LIMIT Befehl, mit dem man sagen kann, dass man nur eine bestimmte Anzahl Datensätze haben will, beginnend ab einem bestimmten Datensatz LIMIT 1,1 würde dann dann den 2. Datensatz liefern.
Vielleicht gibt es sowas ja auch für MS SQL.
ORDER BY und LIMIT heißt es bei MySQL, ... musst sonst mal schauen, ...

redlama


----------



## Cpukiller (8. März 2005)

nein, limit gibt es bei mssql nicht, stattdessen muss man wie schon erwähnt die TOP Anweisung benutzen.
Das was du beschrieben hast ist genau meine Idee die ich hier beschrieben hatte... wollte halt noch gern andere Ansätze hören


----------

