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 / 4844 / 311 / 640 ) »
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.
1923
Views
DB-Abfrage
von Paule » 02.02.2006 11:27 • Verfasst in ABAP® für Anfänger
1
Antw.
2670
Views
DB-Abfrage mit Inner Join
von pat » 21.11.2009 16:41 • Verfasst in ABAP® für Anfänger
1
Antw.
2703
Views
If-Abfrage Betrag
von Frank Zet. » 13.10.2010 14:05 • Verfasst in ABAP® für Anfänger
2
Antw.
2478
Views
Komplexe SQL-Abfrage
von km216 » 14.03.2011 15:52 • Verfasst in ABAP® für Anfänger
5
Antw.
2050
Views
ABAP Abfrage
von SteveOh » 31.08.2011 12:09 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

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

Zeilenumbrüche ersetzen
vor 4 Stunden von rob_abc 4 / 31
Dialog-Container mit Toolbar/Status
vor 23 Stunden von tar gelöst 19 / 2091
SAP Trial Version für SAP Fiori
Gestern von tar 2 / 1446

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 510
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2145
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8741