SQL-Abfrage

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

SQL-Abfrage

Beitrag von abap-strizi (ForumUser / 83 / 0 / 0 ) »
Hallo,
ich weiß zwar nicht ob dass hier her passt in diesen thread aber ich versuchs mal =)

Gibt es in ABAP ein SQL statement dass mir den dbtab eintrag liefert der am nähesten zu meiner eingabe ist.

zB.: ich selektiere

SELECT SINGLE "NÄHESTER WERT" from dbtab into wa_dbtab where spaltenname = meine eingabe.

und nun soll mir der eintrag der am nähesten zu meinem eingabe wert ist geliefert werden.



also wenn in der tabell werte von zB.:

10
13
15
16
23

stehen und mein abfrageparameter "17" ist soll mir der db eintrag von 16 geliefert werden.

ich hoffe ich habe die fragestellung halbwegs verständlich erklährt.
mfg strizi

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Gibts net!

da musst dann schon einen grosseren Bereich selektieren und im Programm dann den nächstliegenden eintrag suchen.

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
möglicherweise kann man das mit HAVING und GROUP BY, sowie Aggregatfunktionen schon erreichen...
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von abap-strizi (ForumUser / 83 / 0 / 0 ) »
@egelram: bin leider nicht so betucht was SQL angeht ... noch nie was von having gehört =)

aber naja dann werd ichs eben so ausprogrammieren,
ist zwar überhaupt nicht performant aber naja, ich werd wohl nicht drum rum kommen.

thx strizi

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Strizi,

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
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von abap-strizi (ForumUser / 83 / 0 / 0 ) »
ja danke ich werds mal versuchen,
und zu deiner frage... ja es soll der nächst liegende egal ob höher oder niedriger gesucht werden.

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
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.

Beitrag von ewx (Top Expert / 4849 / 312 / 642 ) »
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.

Gruß, Enno.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Hallo,

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.

Gruß, Frank

THX !

Beitrag von abap-strizi (ForumUser / 83 / 0 / 0 ) »
SUPER HILFE!!
DANKE an alle !

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1928
Views
DB-Abfrage
von Paule » 02.02.2006 11:27 • Verfasst in ABAP® für Anfänger
1
Antw.
2673
Views
DB-Abfrage mit Inner Join
von pat » 21.11.2009 16:41 • Verfasst in ABAP® für Anfänger
1
Antw.
2709
Views
If-Abfrage Betrag
von Frank Zet. » 13.10.2010 14:05 • Verfasst in ABAP® für Anfänger
2
Antw.
2481
Views
Komplexe SQL-Abfrage
von km216 » 14.03.2011 15:52 • Verfasst in ABAP® für Anfänger
5
Antw.
2057
Views
ABAP Abfrage
von SteveOh » 31.08.2011 12:09 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 21 Minuten von black_adept gelöst 27 / 3946
IT0024 Qualifikationen CP-ID
vor 2 Stunden von ArjenR 1 / 23
Trennen Strasse und Hausnummer
vor 2 Stunden von ewx 17 / 10828

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 21 Minuten von black_adept gelöst 27 / 3946
IT0024 Qualifikationen CP-ID
vor 2 Stunden von ArjenR 1 / 23
Trennen Strasse und Hausnummer
vor 2 Stunden von ewx 17 / 10828

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
vor 2 Stunden von ArjenR 1 / 23
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2963
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9552