SELECT oder WHERE + CONCAT

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

SELECT oder WHERE + CONCAT

Beitrag von christoph ( / / 0 / 3 ) »
Hi,

gibt es in ABAP irgendwie die Möglichkeit Stringkonkatenationen im Select bzw where zu benutzen.

Ich habe drei Felder für ein Buchungsdatum TT MM und JJJJ. Wie kann ich nun abfragen, ob die zwischen zwei Datumswerten liegen.

.... where CONCAT(JJJJ,MM,TT) > von and
CONCAT(JJJJ,MM,TT) < bis.

gehr wohl - galube ich - nicht, oder ?

Gruß C

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


Beitrag von Hermann ( / / 0 / 3 ) »
Das geht nur mit einer native sql-Anweisung, sofern es denn die Datenbank unterstützt. Da ist aber dann die Frage, ob sich dieser Aufwand lohnt, oder ob man die Abfrage nicht anderweitig realisieren kann. Wenn man das Concat wegläßt und die einzelnen Felder benutzt, dürfte man zum gleichen Ergegnis kommen, oder?!

... where jjjj > von(jjjj) and jjjj < bis(jjjj)
and mm > ... usw.

Hermann

Beitrag von christoph ( / / 0 / 3 ) »
Das mit den einzelnen Feldern

... where jjjj > von(jjjj) and jjjj < bis(jjjj)
and mm > ... usw.

geht glaube wohl nicht, außer man fragt ein Datum zwischen 1.1.xxxx und 31.12.yyyy ab :shock:

concat im native sql ist bei mir leider auch unbekannt oder ich habe die richtige Syntax noch nicht gefunden.

Asl einzige Variante sehe ich, die Tabelle vorher einmal mit einem neuen Datumsfeld durchzunudeln und ein concatenate vorher auszuführen.

Dummerweise sind es 20 Mio Sätze :cry:

Aber trotzdem danke
Gruß CB

Beitrag von Hermann ( / / 0 / 3 ) »
Bin der Meinung, daß man das trotzdem hinbekommt. Man muß in Abhängigkeit der Intervallgrenzen die where-Bedingung dynamisch aufbauen (was in ABAP möglich ist), aber dann funktioniert das.

Beispiel:

Tabellendaten:
year,month,day
2004,4,12
2004,4,17
2004,5,2
2004,5,6
2004,5,20
2005,1,1
2004,8,3
2004,2,1

Untere Intervallgrenze: 30.03.2004
Obere Intervallgrenze: 01.06.2004

Zugehörige Select-Anweisung:

select * from datum where
year >= 2004 and year<= 2004 and
(month >= 3 and day > 30)
or (month <=6 and day > 1)

Ergebnis:
year,month,day
2004,4,12
2004,4,17
2004,5,2
2004,5,6
2004,5,20

Ich würde sagen, das Ergebnis stimmt. Hab das ganze mal eben in einer mysql schnell ausprobiert. Wie gesagt, je nach Intervall muß man die where-Bedingung unterschiedlich aufbauen, aber das ist kein unlösbares Problem. Wenn man das macht, fällt mir kein Fall mehr ein, in dem es falsche Ergebnisse liefert (lasse mich aber gern vom Gegenteil überzeugen).

Hermann

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Man muss es nicht dynamisch machen, nur sieht dann die Verschachtelung der verschiedenen geklammerten und mit OR und AND verknüpften Bedingungen etwas unübersichtlich aus, da man noch den Fall from_year < to_year mit beachten muss.
(Den Fall from_year > to_year lässt man lieber nicht von der DB prüfen, sondern selektiert gar nicht erst.)

Beitrag von Hermann ( / / 0 / 3 ) »
Frank Dittrich hat geschrieben:Man muss es nicht dynamisch machen, nur sieht dann die Verschachtelung der verschiedenen geklammerten und mit OR und AND verknüpften Bedingungen etwas unübersichtlich aus, da man noch den Fall from_year < to_year mit beachten muss.
(Den Fall from_year > to_year lässt man lieber nicht von der DB prüfen, sondern selektiert gar nicht erst.)
Zugegeben.
Dann wird es aber wirklich etwas unübersichtlich ;-)

Hermann

Seite 1 von 1

Vergleichbare Themen

4
Antw.
21575
Views
Select nach Parameter & Select-Options
von doeme » 10.07.2012 16:37 • Verfasst in ABAP® für Anfänger
2
Antw.
1654
Views
Job hängt an select, wie herausfinden welches select
von dpz » 01.08.2019 10:23 • Verfasst in ABAP® Core
2
Antw.
3581
Views
Select * und Select von einzelnen Werten zugleich
von StefanJue » 04.10.2006 18:10 • Verfasst in ABAP® für Anfänger
4
Antw.
10963
Views
Performance: SELECT UP TO 1 ROWS vs. SELECT SINGLE
von roman1983 » 04.09.2008 14:29 • Verfasst in ABAP® für Anfänger
8
Antw.
7961
Views
SELECT SINGLE oder SELECT UP TO 1 ROWS?
von nickname8 » 12.04.2021 10:38 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

ATC Finding in Smartforms
vor 2 Tagen von sap_enthusiast 2 / 289
LSMW-Problem
vor 3 Tagen von rob_abc 4 / 348

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

ATC Finding in Smartforms
vor 2 Tagen von sap_enthusiast 2 / 289
LSMW-Problem
vor 3 Tagen von rob_abc 4 / 348

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
letzen Monat von Manfred K. 1 / 70439
Benutzerdefinierte Felder PSP
January 2026 von Rabea1103 1 / 123304