dass Du davon noch nie etwas gehört hast, ist eine Sache, aber herauszufinden, was das ist und wie man das benutzt, ist doch im Rahmen des Möglichen, oder?
Ich gestehe, dass im meinem Posting der Zusatz fehlte, dass diese Klausen Bestandteil des SELECT-Befehls sind und dem entsprechend in der Hilfe zu SELECT zu finden sind...
Im Wesentlichen kann man mit den unten genannten Klauseln, die zu selektierenden Daten auf Basis bestimmter Felder gruppieren und unter Anwendung von Aggragatfunktionen (z.B. MAX, AVG, MIN etc.) solche Fragen möglicherweise lösen.
Bei Deiner Fragestellung scheint es so zu sein, dass der nächstliegende Wert gesucht wird, unabhängig davon, ob er höher oder niedriger ist. Ist das richtig? Wenn ja, wird die Auswertung etwas schwieriger.
Gruß
Ereglam
May the Force be with your code || .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .
Ich hab mir grad was überlegt, was die vielleicht helfen könnte.
Wenn dein "NÄHESTER WERT" eine Zahl ist, dann könntest es doch so machen:
- User gibt z.B. 60 ein
- um diese eingabe machst einen Intervall von z.B. +-20
- beim select fragst auf diesen Intervall ab (im Beispiel wären das dann 40-80
- dann hast diese Daten in der Internen Tabelle, welche du sortierst
- über diese Itab LOOPst du dann und prüfst ab welcher Wert die geringste abweichung zur eingabe hat und diese speichersts in einer variable ab.
Beispiel: eiingegebene Zahl: 60
1: select where zahl = 60. => Gefunden: Alles in Butter
Ansonsten:
2: select max( zahl ) where zahl < 60
3: select min( zahl ) where zahl > 60
Dann muss man noch herausfinden, ob die kleinere oder größere Zahl näher an 60 liegt.
noch zu überlegen: Was willst Du machen, wenn die eingegebene Zahl genau in der Mitte liegt, die obere und untere also genau die gleiche Differenz zur eingegebenen haben?
Ach ja, ein Hinweis zu MAX( ): wenn die in deiner Tabelle kleinste vorhandene Zahl beispielsweise 7 ist und Du als Suchwert 2 eingibst, bekommst Du als unteren Intervallwert die 0, liegt zwar näher an 2 als die 7, ist aber als Satz in der Tabelle nicht vorhanden. D.h., da müsste auf Existenz geprüft werden und gegebenenfalls doch der obere Intervallwert genommen werden.
Zum Vorgehen: ich würde wohl erst den nähesten Wert ermitteln und dann mit diesem einen neuen Select starten um den entsprechenden Satz zu ziehen.