SQL Abfrage mit zusammengefassten Werten

Andey

Benutzer
Beiträge
5
Hallo,
mittlerweile weiß ich, dass es fast nichts gibt, was nicht in SQL zu lösen wäre (zumindest für meine Bedürfnisse)... nur sollte man wissen wie - und an dieser Stelle hakt es noch etwas :)

Zur Erklärung:
Ich habe eine Abfrage, die über INNER JOIN mehrere Tabellen miteinander verknüft.
Somit wird mir ein Kunde mit z.B. 3 Abladeorten auch dreimal angezeigt, kommen noch weitere Unterschiede hinzu, entsprechend öfter.
Ist es möglich, diesen Kunden in nur einer Zeile angezeigt zu bekommen, dafür aber alle drei Abladeorte und Chargen in einem Datefeld - getrennt durch einen Separator (z.B. ein Komma) ?

Hier ein sehr vereinfachtes Beispiel:
SELECT DISTINCT ak.KD_NR, ak.KD_NAME, ak.KD_TELEFON, ch.CHARGE_NR, ak.ORT
FROM beispiel.kunden ak
INNER JOIN beispiel.charge ch ON ch.pk=ak.ch_fk
INNER JOIN beispiel.abladeort ao ON ao.pk=ak.ao_fk
WHERE ak.LIEFERWOCHE='2'

Als Ergebnis erhalte ich das:

ak.KD_NR I ak.KD_NAME I ak.KD_TELEFON I ch.CHARGE_NR I ak.ORT
----------------------------------------------------------------------------------------
628 I Heinz I 002-332 I 3 I Mainz
628 I Heinz I 002-332 I 4 I Köln
628 I Heinz I 002-332 I 3 I Frankfurt
628 I Heinz I 002-332 I 1 I Köln
722 I Kolber I 07228 3090 I 3 I Bremen
722 I Kolber I 07228 3090 I 4 I Bremen

das hier wäre mein Wunsch:
ak.KD_NR I ak.KD_NAME I ak.KD_TELEFON I ch.CHARGE_NR I ak.ORT
----------------------------------------------------------------------------------------
628 I Heinz I 002-332 I 1, 3, 4 I Frankfurt, Köln, Mainz
722 I Kolber I 07228 3090 I 3, 4 I Bremen

Wahrscheinlich habe ich bei der Beispielabfrage jetzt 200 Fehler eingebaut - aber ich glaube es wird klar, worauf ich hinaus möchte.

Für Vorschläge wäre ich echt wahnsinnig dankbar.
 
Werbung:
Vielen Dank. Das wäre grandios gewesen - aber ich versuche ORACLE 10g damit abzufragen. Hier wurde listagg() leider noch nicht implementiert :/
 
Werbung:
Hallo,
erstmal vielen Dank für die vielen Antworten.

Einziger Grund mit Oracle 10 zu arbeiten ist, dass es nicht meine persönliche Datenbank ist :)
Das ist aber auch der Grund, weshalb ich nur Leserechte auf die DB habe und so alle "Create" / "Replace" Lösungen auch nicht umsetzbar sind.

wm_concat() hatte ich auch schon probiert - funktioniert aber leider nicht.

Ich werde mich wohl näher mit xmlagg befassen müssen. Bis ich meine Abfrage soweit angepasst habe, werden wohl mehrere Tage vergehen. Gerne sage ich aber Bescheid, ob ich über diesen Weg zum Ziel gekommen bin.

Vielen Dank!
 
Zurück
Oben