Pieter: SQL: Abfrage zum nächsttieferen Wert

Beitrag lesen

Hallo Vinzenz,

vielen Dank erstmal!

Das Ergebnis ist in diesem Fall eindeutig.

Was hättest Du gerne in folgendem Fall?

ID | Value
0    10
1    20
2    20
3    30

Das kann ich (gottseidank) ausschließen. :) Kann nicht vorkommen.

Grundsätzlich gibt es die verschiedensten Möglichkeiten. Zum Beispiel bietet es sich an, zunächst eine geeignete WHERE-Klausel zu verwenden, die Datensätze geeignet zu sortieren und die Ergebnismenge wie gewünscht zu limitieren.

Wäre das sowas wie:

SELECT * FROM myTable WHERE Value < 23 ORDER BY Value LIMIT 1;

Aber das ist doch nicht eindeutig, oder? SQL könnte dann doch auch den Datensatz 0 mit Value 10 zurückliefern?

Eine andere Möglichkeit wäre es mit einem Subselect und der Aggregatsfunktion MAX() zu arbeiten.
Wenn Dir meine Angaben noch nicht genügend weiterhelfen, so gib uns bitte Dein DBMS inklusive Version an.

Oracle10g wäre das. Wie in etwas sähe denn die Verwendung von MAX() aus? Ich habe da leider keine genaue Vorstellung...

Danke,
Pieter