Zum Inhalt springen

DB2 SQL Abfrage


Fraggla

Empfohlene Beiträge

Hi,

komme hier atm nicht weiter :(

In einer Tabelle von uns, soll ich folgende Aufgabe lösen:

In der Liste stehen Rechnungskundennummer Kundennummer Abteilung und Debitorenkonto.

Eine Rechnungskundennummer kann mehrere Kunden + Debitorenkontonummern haben, muss sie aber nicht.

Aufgabe: Alle Spalten anzeigen, wo nur die Rechnungskundennummern vorkommen, die mehrere Kundennummern usw. haben.

Bisherige Lösung:

Verdichten, in eine seperate Tabelle ausgeben, Join = fertig.

Das soll jetzt allerdings alles in einer Abfrage geregelt werden.

Hab leider keinen Plan wie ich das anstellen soll....

Bisherige Lösungsansätze:

SELECT dt2.fir, dt2.REKD, dt2.KDNR, dt2.ABTL, dt2.DBKT 

FROM usr/tekda dt2                                  

WHERE EXISTS ( SELECT kda.FIR, kda.REKD                

                      FROM usr/tekda kda            

                      WHERE EXISTS                     

             ( SELECT dt1.fir, dt1.rekd, count(*)      

                      FROM usr/tekda  dt1           

                      WHERE dt1.fir  = kda.fir         

                      AND   dt1.REKD = kda.REKD        

                      GROUP by dt1.fir, dt1.rekd       

                      HAVING count(*) <> 1 ))          

Liefert leider alle Werte zurück. Sämtliche weitere Versuche führen zu syntaktischen Problemen usw.

Wäre schön wenn mir hier jemand die Lösung verraten könnte.

Mfg

Fraggla

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bisherige Lösungsansätze:

SELECT dt2.fir, dt2.REKD, dt2.KDNR, dt2.ABTL, dt2.DBKT -> *

FROM usr/tekda dt2

WHERE EXISTS ( SELECT kda.FIR, kda.REKD

FROM usr/tekda kda

WHERE EXISTS

( SELECT dt1.fir, dt1.rekd, count(*)

FROM usr/tekda dt1

WHERE dt1.fir = kda.fir -> Ist ein und die selbe Tabelle

AND dt1.REKD = kda.REKD -> siehe oben

GROUP by dt1.fir, dt1.rekd

HAVING count(*) <> 1 )) -> Das es mehrere sein sollen, reicht >1

Das wird also zu:

SELECT fir, rekd FROM usr/tekda Group by fir, rekd HAVING count(*) > 1

* so nicht möglich.

Bearbeitet von FISI from Hell
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nope sorry, funzt so nicht.

Ich poste mal zum Verständnis den ungewünschten Lösungsweg über 3 Abfragen:

1. Verdichtung, damit gezählt werden kann:

SELECT FIR, REKD, DBKT

FROM usr/tekda kda

GROUP by FIR, REKD, DBKT

order by FIR, REKD, DBKT

wird in tekdas1 gespeichert

einschränken auf mehrere werte:

select fir, rekd, count(*)

from usr/tekdas1

GROUP by fir, rekd

having count(*) <> 1

ORDER by fir, rekd

Und schließlich die Fertigstellung

SELECT kda.FIR, kda.REKD, kda.KDNR, kda.ABTL, kda.DBKT

FROM usr/tekda kda

right outer join usr/jointest tes

on kda.FIR = tes.FIR

and kda.REKD = tes.REKD

Link zu diesem Kommentar
Auf anderen Seiten teilen

Musterlösung:

WITH KDA as (SELECT fir, rekd, dbkt from usr/tekda

GROUP by fir, rekd, dbkt

ORDER by fir, rekd, dbkt) ,

KD1 as (SELECT fir, rekd, count(*) Anz_Deb from KDA

GROUP by fir, kda.rekd

HAVING count(*) <> 1

ORDER by fir, kda.rekd)

SELECT kd2.fir, kd2.rekd, kd2.kdnr, kd2.abtl, kd2.dbkt

FROM KD1, USR/TEKDA kd2

where kd1.fir = kd2.fir

and kd1.rekd = kd2.rekd

ORDER by kd2.fir, kd2.rekd, kd2.kdnr, kd2.abtl, kd2.dbkt

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...