Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SELECT INTO mit 3 Tabellen UNION ALL und Subselect?

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von dr.evil, 5 Februar 2013.

  1. dr.evil

    dr.evil Benutzer

    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:

  2. ukulele

    ukulele Datenbank-Guru

    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
     
  3. ukulele

    ukulele Datenbank-Guru

    PS: Du musst unter MS SQL eigentlich mit Aliasen arbeiten sonst bekommst du Probleme. Auch solltest du unbedingt die Spalten angeben und kein * verwenden.
     
  4. dr.evil

    dr.evil Benutzer

    Durch die FaktID soll erkennbar sein, um was für einen Werttyp es sich handelt. Beispielsweise Rabatt oder Menge oder Preis.
     
  5. ukulele

    ukulele Datenbank-Guru

    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
     
  6. dr.evil

    dr.evil Benutzer

    Danke das wars. Einfacher als gedacht :) Hab es jetzt noch umgebaut das ich meine anderen Werte noch in die Tabelle bekomme.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden