-
SQL-Abfrage mit bedingtem Where
Hallo zusammen,
bin noch ziemlich neu im SQL-Umfeld und suche seit 2 Stunden händeringend eine Lösung für folgendes Problem:
Um unsere Programmierer zu entlasten, möchte ich unseren Usern ein Programm zur Hand geben, um sich selbst Verkaufsstatistiken zu erstellen. Hierfür habe ich eine DSPF erstellt, in welcher die User die gewünschten Auswertungen spezifizieren können.
Wenn ein Anwender z. B. alle Umsätze einer best. Kundengruppe möchte, so soll er nur diese in das Feld IKDGR eintragen müssen.
Da ich aber noch viele andere Felder abfragen lassen möchte, muss ich meine WHERE-Anweisung bedingen, so dass ich nur die Werte in meiner WHERE-Anweisung abfrage, die der Benutzer auch eingegeben hat.
Also ungefähr so:
Select Feld1, Feld2 .... from LIB/FILE
where
if :IKDGR > 0 then FILE.KDGR = :IKDGR end AND
if :IVERBAND > 0 then FILE.VERBAND = :IVERBAND end AND
if :IKDNR > 0 then FILE.KDNR = :IKDNR end AND ....
Soweit verständlich ausgedrückt ??
-
Hallo,
relativ einfach geht das mit between und Vorbelegung der entsprechenden Variablen mit highval und loval; wenn dann nix ausgewählt wird, dann kriegt man alles.
D*B
 Zitat von Tobse77
Hallo zusammen,
bin noch ziemlich neu im SQL-Umfeld und suche seit 2 Stunden händeringend eine Lösung für folgendes Problem:
Um unsere Programmierer zu entlasten, möchte ich unseren Usern ein Programm zur Hand geben, um sich selbst Verkaufsstatistiken zu erstellen. Hierfür habe ich eine DSPF erstellt, in welcher die User die gewünschten Auswertungen spezifizieren können.
Wenn ein Anwender z. B. alle Umsätze einer best. Kundengruppe möchte, so soll er nur diese in das Feld IKDGR eintragen müssen.
Da ich aber noch viele andere Felder abfragen lassen möchte, muss ich meine WHERE-Anweisung bedingen, so dass ich nur die Werte in meiner WHERE-Anweisung abfrage, die der Benutzer auch eingegeben hat.
Also ungefähr so:
Select Feld1, Feld2 .... from LIB/FILE
where
if :IKDGR > 0 then FILE.KDGR = :IKDGR end AND
if :IVERBAND > 0 then FILE.VERBAND = :IVERBAND end AND
if :IKDNR > 0 then FILE.KDNR = :IKDNR end AND ....
Soweit verständlich ausgedrückt ??
-
Probier's mal so:
Code:
SELECT Feld1, Feld2 ....
FROM LIB/FILE
WHERE CASE WHEN :IKDGR <> 0 THEN :IKDGR ELSE KDGR END = KDGR
AND CASE WHEN :IVERBAND <> 0 THEN :IVERBAND ELSE VERBAND END = VERBAND
AND CASE WHEN :IKDNR <> 0 THEN :IKDNR ELSE KDNR END = KDNR
AND ....
-
Hallo BenderD und Pikachu,
vielen Dank für die Antworten !!!
Funktionieren beide, wobei ich mich für die von Pikachu entschieden habe, da ich dann keine weiteren Hostvariablen initialisieren muss und mir diese Lösung "eleganter" erscheint.
Vielen Dank nochmal !!
Similar Threads
-
By Miller8888 in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-09-07, 17:30
-
By AS400-Anfänger in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 27-06-06, 13:18
-
By behmer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 29-05-06, 12:52
-
By steven_r in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 17-05-06, 15:49
-
By mwithake in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 05-11-05, 09:15
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks