Ergebnisse aus Zeilen Spalten zuweisen

BadBunny

Neuer Benutzer
Beiträge
2
Hallo, ich wüsste gerne ob es möglich ist, einzelne Werte verschiedener Zeilen einer neuen Spalte zu zuweisen.
Habe einfach mehrere Zeilen, die bis auf einen Wert gleich sind.

Zeilen sehen entsprechend aus
KdNr, Name, Nachname, PLZ, Ort, Telefon
Wenn also jemand, mit gleicher Kundenummer mehrere Telefonummern hat, sollen diese in bis zu 5 Spalten, statt sich wiederholend in Zeilen.
KdNr, Name, Nachname, PLZ, Ort, Telefon1 ... Telefon5
 
Werbung:
Hallo, ich wüsste gerne ob es möglich ist, einzelne Werte verschiedener Zeilen einer neuen Spalte zu zuweisen.
Habe einfach mehrere Zeilen, die bis auf einen Wert gleich sind.

Zeilen sehen entsprechend aus
KdNr, Name, Nachname, PLZ, Ort, Telefon
Wenn also jemand, mit gleicher Kundenummer mehrere Telefonummern hat, sollen diese in bis zu 5 Spalten, statt sich wiederholend in Zeilen.
KdNr, Name, Nachname, PLZ, Ort, Telefon1 ... Telefon5

Aggregiere das einfach zu einem String. Das kann sogar MySQL. Die Idee mit Spalten ist Murks.
 
Stehe allerdings vor dem Problem dass ich Rechtetechnisch zwar Views anlegen darf, aber keine neuen Tabellen und dass die Software, die mit dem Ergebnis arbeiten muss eine Tabelle erwartet.
Muss also zwangsweise einen Workaround finden.
Und ja, das gesamte Datenbanklayout hier ist Mist, aber vor meiner Zeit entstanden.
 
Werbung:
Mit GROUP BY und group_concat() oder wie das in MySQL heißt ließe sich akretschmers Vorschlag alle Telefonnummern hintereinander hängen umsetzen.

Wenn du sagst du möchtest nur für Telefonnummern bis zu maximal 5 Spalten haben ginge es auch mit 4 Joins. Am Besten mit einem Zwischenschritt, erste Sicht:
Code:
SELECT   ROW_NUMBER() OVER (PARTITION BY KdNr ORDER BY Telefon) AS zeile,
     KdNr,
     Name,
     Nachname,
     PLZ,
     Ort,
     Telefon
FROM   tabelle
zweite Sicht:
Code:
SELECT   v1.KdNr,
     v1.Name,
     v1.Nachname,
     v1.PLZ,
     v1.Ort,
     v1.Telefon AS Telefon1,
     v2.Telefon AS Telefon2,
     v3.Telefon AS Telefon3,
     v4.Telefon AS Telefon4,
     v5.Telefon AS Telefon5
FROM   view_temp1 v1
LEFT JOIN view_temp1 v2
ON     v1.KdNr = v2.KdNr
AND     v2.zeile = 2
LEFT JOIN view_temp1 v3
ON     v1.KdNr = v3.KdNr
AND     v3.zeile = 3
LEFT JOIN view_temp1 v4
ON     v1.KdNr = v4.KdNr
AND     v4.zeile = 4
LEFT JOIN view_temp1 v5
ON     v1.KdNr = v5.KdNr
AND     v5.zeile = 5
WHERE   v1.zeile = 1
 
Zurück
Oben