DB2 Datenbank - SQL Abfrage
Standard SQL-Abfrage
Hallo liebe Forumsmitglieder, bin neu im Forum, daher ein herzliches Hallo an alle!!
Ich bin momentan mit einer SQL-Abfrage beschäftigt, bei der ich bisher keinen Lösungsansatz habe:
Es handelt sich um eine ziemlich große DB2-Datenbank, bei der Abfrage werden mehrere Tabellen selektiert mithilfe zweier Inner-Joints!
Es werden Anträge verwaltet, welche alle über eine Vorgangsnummer aber nur einige über eine Versicherungsnummer verfügen.
Nun werden in der bestehenden Abfrage alle Anträge in Bearbeitung mit ihrem derzeitigen Status im System ausgegeben.
Die Ausgabe erfolgt sortiert nach Jahr und Monat und gruppiert nach dem derzeitigen Status. Zudem wird die Anzahl der Anträge je Status im enstprechenden Monat ausgewiesen.
Nun soll, vorausgesetzt der Antrag hat den Status XY und es ist eine Versicherungsnummer vorhanden, der Antrag unter einem anderen Status "YZ" im Abfrageergebnis erscheinen und natürlich auch zahlenmäßig ausgewiesen werden.
Hätte da jemand ne Idee? Ich dachte schon an If-Abfragen oder Vergleichsabfragen mit UNION?
Bisher klappt irgendwie nix richtig...
Greeetz and thx...
Sebastian F
Hallo liebe Forumsmitglieder, bin neu im Forum, daher ein herzliches Hallo an alle!!
Ich bin momentan mit einer SQL-Abfrage beschäftigt, bei der ich bisher keinen Lösungsansatz habe:
Es handelt sich um eine ziemlich große DB2-Datenbank, bei der Abfrage werden mehrere Tabellen selektiert mithilfe zweier Inner-Joints!
Es werden Anträge verwaltet, welche alle über eine Vorgangsnummer aber nur einige über eine Versicherungsnummer verfügen.
Nun werden in der bestehenden Abfrage alle Anträge in Bearbeitung mit ihrem derzeitigen Status im System ausgegeben.
Die Ausgabe erfolgt sortiert nach Jahr und Monat und gruppiert nach dem derzeitigen Status. Zudem wird die Anzahl der Anträge je Status im enstprechenden Monat ausgewiesen.
Nun soll, vorausgesetzt der Antrag hat den Status XY und es ist eine Versicherungsnummer vorhanden, der Antrag unter einem anderen Status "YZ" im Abfrageergebnis erscheinen und natürlich auch zahlenmäßig ausgewiesen werden.
Hätte da jemand ne Idee? Ich dachte schon an If-Abfragen oder Vergleichsabfragen mit UNION?
Bisher klappt irgendwie nix richtig...
Greeetz and thx...
Sebastian F
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 70581
Url: https://administrator.de/contentid/70581
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
8 Kommentare
Neuester Kommentar
Moin predator1984,
willkommen im Forum.
Bitte teile uns noch mit,
Und dann kann's losgehen.
Grüße
Biber
willkommen im Forum.
Bitte teile uns noch mit,
- ob Du von einer DB2/zOS oder einer UDB oder der Version 7, der 8.1 oder der 9er redest
- ob die Tabelle und Felder auch Namen haben, unter denen wie sie ansprechen dürfen
- wie die Rückgabe-Feldnamen in dem Resultset heißen sollen.
- wie die gemeinsamen Schlüssel für einen INNER oder LEFT Join heißen
- wie die Kardinalitäten (1:1 oder 1:n oder m:n) zwischen den beteiligten Tabellen aussehen
- und, falls es schon ein SQL-Statement gibt, dann auch das.
Und dann kann's losgehen.
Grüße
Biber
So, predator,
gelesen und nachvollzogen haben wir es nun alle.... kannst Du noch mal die Änderung verglichen mit dem heutigen Resultset spezifizieren bitte?
? Welcher Status XY ist gemeint ?
? Welche "Versicherungsnummer" ist gemeint... mit bloßen Auge finde ich sie nicht (dabei habe ich es schon sicherheitshalber auf umformatiert.
Kannst Du noch mal geduldig sein....
Grüße
Biber
gelesen und nachvollzogen haben wir es nun alle.... kannst Du noch mal die Änderung verglichen mit dem heutigen Resultset spezifizieren bitte?
Nun soll, vorausgesetzt der Antrag hat den Status XY und es ist eine Versicherungsnummer vorhanden, der Antrag unter einem anderen Status "YZ" im Abfrageergebnis erscheinen und natürlich auch zahlenmäßig ausgewiesen werden.
? Welcher Status XY ist gemeint ?
? Welche "Versicherungsnummer" ist gemeint... mit bloßen Auge finde ich sie nicht (dabei habe ich es schon sicherheitshalber auf umformatiert.
Kannst Du noch mal geduldig sein....
Grüße
Biber
Moin predator1984,
kann sein, dass ich das zu locker sehe, aber IMHO brauchst Du nur oben in dem fließend lesbaren Teil des Statements einzugreifen:
Grüße
Biber
kann sein, dass ich das zu locker sehe, aber IMHO brauchst Du nur oben in dem fließend lesbaren Teil des Statements einzugreifen:
select
substr(char(a.letzte_aenderung),3,2) || '.' || substr(char(a.letzte_aenderung),6,2) "Monat",
b.text "Status",
sum(a.beitrag) "Summe der Beiträge",
Sum( case WHEN (a.geschaeftsbjekt_status_cd="8" and a.vsnr IS NOT NULL)
THEN 1
ELSE 0
END )
as "Mit VSNr",
Sum( case WHEN (a.geschaeftsbjekt_status_cd="8" and a.vsnr IS NULL)
THEN 1
ELSE 0
END )
as "Ohne VSNr",
count(a.beitrag) "Anzahl"
.....
[Rest wie gehabt]
Grüße
Biber