SQL Abfrage: 1:N (Tabelle transponieren)

@ukulele meint sowas:

Code:
Select a.Adressenr,
            k.Komart,
            k.Nummer,
            l.Komart,
            l.Nummer,
            g.Komart,
            g.Nummer
From reladresse a
Left Join relkomm k On a.Adressenr = k.Adressenr And k.komart = 1
Left Join relkomm l On a.Adressenr = l.Adressenr And l.komart = 2
Left Join relkomm g On a.Adressenr = g.Adressenr And g.komart = 3
.
.
.
 
Werbung:
@ukulele meint sowas:

Code:
Select a.Adressenr,
            k.Komart,
            k.Nummer,
            l.Komart,
            l.Nummer,
            g.Komart,
            g.Nummer
From reladresse a
Left Join relkomm k On a.Adressenr = k.Adressenr And k.komart = 1
Left Join relkomm l On a.Adressenr = l.Adressenr And l.komart = 2
Left Join relkomm g On a.Adressenr = g.Adressenr And g.komart = 3
.
.
.


das skalieret doch nicht, kommt eine Art dazu ändert man das SQL. Das ist Murks.
 
Mit einer Oracle 8... hat man wohl nicht viele andere Möglichkeiten ?!
Ich mein... Oracle 8i ist 1997 erschienen wenn ich mich nicht irre...
 
Werbung:
@akretschmer: So wie sich das anhört ist das CRM-/-ERP-System-what-ever nicht unbedingt großen Änderungen unterworfen, fängt schon damit an das die Oracle Version steinalt ist. Ich denke als simple Übergangslösung taugt das schon was.

Ich meine:

Code:
SELECT    a.Adressenr,
        k1.Nummer AS Telefonnummer,
        k2.Komart,
        k2.Nummer,
        k3.Komart,
        k3.Nummer,
        k4.Komart,
        k4.Nummer,
        k5.Komart,
        k5.Nummer,
        k6.Komart,
        k6.Nummer,
        k7.Komart,
        k7.Nummer,
        k8.Komart,
        k8.Nummer,
        k9.Komart,
        k9.Nummer,
        k10.Komart,
        k10.Nummer
FROM    reladresse a
LEFT JOIN relkomm k1 ON a.Adressenr = k1.Adressenr AND k.komart = 1
LEFT JOIN relkomm k2 ON a.Adressenr = k2.Adressenr AND k.komart = 2
LEFT JOIN relkomm k3 ON a.Adressenr = k3.Adressenr AND k.komart = 3
LEFT JOIN relkomm k4 ON a.Adressenr = k4.Adressenr AND k.komart = 4
LEFT JOIN relkomm k5 ON a.Adressenr = k5.Adressenr AND k.komart = 5
LEFT JOIN relkomm k6 ON a.Adressenr = k6.Adressenr AND k.komart = 6
LEFT JOIN relkomm k7 ON a.Adressenr = k7.Adressenr AND k.komart = 7
LEFT JOIN relkomm k8 ON a.Adressenr = k8.Adressenr AND k.komart = 8
LEFT JOIN relkomm k9 ON a.Adressenr = k9.Adressenr AND k.komart = 9
LEFT JOIN relkomm k10 ON a.Adressenr = k10.Adressenr AND k.komart = 10
Wobei ich bei Kom 2-9 noch die Spalte Komart raus nehmen und mit AS in den Spaltennamen packen würde. Außerdem wird es ein Problem sobald es von einer Komart mehr als einen Wert geben kann, z.B. 2 Telefonnummern und 3 E-Mailadressen, da kommen dann mehrere Zeilen raus, in diesem Beispiel mindestens 6.
 
Zurück
Oben