SELECT INTO mit 3 Tabellen UNION ALL und Subselect?

dr.evil

Benutzer
Beiträge
5
Hallo,
ich versuche gerade eine Abfrage zu bauen die mir eine neue Tabelle erstellt.
tab_Werte.KundeID, tab_Werte.BestellID, tab_Werte.WarenID sollen in eine neue Tabelle tab_Result eingefügt werden. Dazu zwei neue Spalten FaktID und Wert. Wert soll per UNION ALL aus tab_Werte.Preis, tab_Werte.Menge und tab_Werte.Rabatt zusammengestellt werden. Die FaktID soll passend aus der tab_FaktDimID ergänzt werden.

Was ich erreichen möchte ist in tab_Result zu sehen.

Mein UNION ALL Statement
Code:
SELECT * INTO  tab_Result FROM (SELECT Preis FROM tab_Werte
UNION ALL
SELECT Menge FROM tab_Werte
UNION ALL
SELECT Rabatt FROM tab_Werte) AS tmpWerte
Das funktioniert soweit. Nur wie ich das mit der FaktID und dem einfügen der anderen Werte (KundeID,BestllID und WarenID) in eine Abfrage einbaue weiß ich nicht.
 

Anhänge

  • tabelle.jpg
    tabelle.jpg
    51,4 KB · Aufrufe: 1
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
Die FaktID soll passend aus der tab_FaktDimID ergänzt werden.
Ich bin jetzt nicht sicher was du mit passend meinst, aber hier mal eine Idee:
Code:
SELECT    FaktID,Wert
INTO    tab_Result
FROM    (
SELECT    KundeID AS FaktID,
        Preis AS Wert
FROM    tab_Werte
UNION ALL
SELECT    BestellID AS FaktID,
        Menge AS Wert
FROM    tab_Werte
UNION ALL
SELECT    WarenID AS FaktID,
        Rabatt AS Wert
FROM    tab_Werte
) AS tmpWerte
 

ukulele

Datenbank-Guru
Beiträge
4.702
PS: Du musst unter MS SQL eigentlich mit Aliasen arbeiten sonst bekommst du Probleme. Auch solltest du unbedingt die Spalten angeben und kein * verwenden.
 

ukulele

Datenbank-Guru
Beiträge
4.702
Dann musst du eine feste ID angeben:
Code:
SELECT    FaktID,
        Wert
INTO    tab_Result
FROM    (
SELECT    'Preis' AS FaktID,
        Preis AS Wert
FROM    tab_Werte
UNION ALL
SELECT    'Menge' AS FaktID,
        Menge AS Wert
FROM    tab_Werte
UNION ALL
SELECT    'Rabatt' AS FaktID,
        Rabatt AS Wert
FROM    tab_Werte
) AS tmpWerte
 
Werbung:
Oben