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

Spalte teilen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Dudada, 28 Mai 2015.

  1. Dudada

    Dudada Benutzer

    Eine Spalte einer Tabelle soll soll in zwei Spalten aufgeteilt werden:

    Art.Nr. Artikel

    100 Audi
    100 A3
    100 rot
    200
     
  2. ukulele

    ukulele Datenbank-Guru

    Geht mit
    Code:
    ALTER TABLE tabelle ADD COLUMN neue_spalte datentyp
    und
    Code:
    UPDATE t1
    SET t1.CalculatedColumn = t2.[Calculated Column]FROM dbo.Table1 AS t1INNERJOIN dbo.Table2 AS t2ON t1.CommonField = t2.[Common Field]
    
     
  3. Dudada

    Dudada Benutzer

    Sorry, aber der Text ist nicht komplett übernommen worden. Hier noch einmal:

    Eine Spalte einer Tabelle "Auto" soll soll in zwei Spalten aufgeteilt werden:

    Art.Nr. Feld.Nr. Artikel

    100 01 Audi
    100 02 A3
    100 03 rot
    200 01 BMW
    200 02 3er
    200 03 blau

    Spalte 1 soll unverändert bleiben. Spalte 2 soll in Automarke, Modell und Farbe aufgeteilt werden:

    Art.Nr. Automarke Modell Farbe
    100 Audi A3 rot
    200 BMW 3er blau

    Dazu habe ich folgende Abfrage versucht:

    select Art.Nr.,
    (select Artikel from Auto where FeldNr. = '01')Automarke
    from Auto

    Die Fehlermeldung besagt, dass die Unterabfrage mehr als eine Zeile liefert.
    Ist mein Ansatz einer Unterabfrage falsch oder habe ich nur was vergessen?
     
  4. ukulele

    ukulele Datenbank-Guru

    Es gibt mehrere Wege aber deine Syntax ist in jedem Fall nicht ganz richtig.

    Angenommen deine Tabelle Auto hätte die ursprünglichen Spalten Art.Nr., Feld.Nr. und Artikel. Dazu kämen jetzt Spalten Marke, Modell und Farbe, die wären erstmal leer.

    Mit:
    Code:
    UPDATE   t1
    SET     t1.Marke = t1.Artikel,
         t1.Modell = t2.Artikel,
         t1.Farbe = t3.Artikel
    FROM   [Auto] AS t1
    LEFT JOIN [Auto] AS t2
    ON     t1.[Art.Nr.] = t2.[Art.Nr.]
    AND     t2.[Feld.Nr.] = '02'
    LEFT JOIN [Auto] AS t3
    ON     t1.[Art.Nr.] = t3.[Art.Nr.]
    AND     t3.[Feld.Nr.] = '03'
    WHERE   t1.[Feld.Nr.] = '01'
    könntest du die neuen Spalten für die Zeilen befüllen, die die Marke enthalten. Alle Daten stünden dann in diesen Zeilen und den neuen Spalten, alte Zeilen und Spalten könnten gelöscht werden.
     
  5. Dudada

    Dudada Benutzer

    Hallo Ukulele,


    vielen Dank für deine schnellen Rückmeldungen!!! Bin hier gerade Einzelkämpferin und schwimme in Arbeit, deshalb meine "verspätete" Rückmeldung. Vielleicht noch vorweg: Ich bin ein absolutes Greenhorn und muss diese Aufgabe – „Sie machen das schon“ – zusätzlich erledigen. Dies zu meiner Entschuldigung.


    Ich habe mich - erneut (Sorry!) - unglücklich ausgedrückt. Ich muss die Tabelle aus einer Datenbankabfrage heraus erstellen. Die Datenbanktabelle darf dabei nicht verändert werden.
     
  6. ukulele

    ukulele Datenbank-Guru

    Ich glaube dann suchst du das ganze nur als Select:
    Code:
    SELECT
    t1.Artikel AS Marke,
    t2.Artikel AS Modell,
    t3.Artikel AS Farbe
    FROM [Auto] AS t1
    LEFT JOIN [Auto] AS t2
    ON t1.[Art.Nr.] = t2.[Art.Nr.]
    AND t2.[Feld.Nr.] = '02'
    LEFT JOIN [Auto] AS t3
    ON t1.[Art.Nr.] = t3.[Art.Nr.]
    AND t3.[Feld.Nr.] = '03'
    WHERE t1.[Feld.Nr.] = '01'
     
  7. Tommi

    Tommi Datenbank-Guru

    Hi,

    das kannst du mit einer gruppierten Abfrage und CASE...WHEN... lösen:
    Code:
    SELECT [Art.Nr.],
    MAX(CASE WHEN [Feld.Nr]='01' THEN [Artikel] ELSE '' END) as Marke,
    MAX(CASE WHEN [Feld.Nr]='02' THEN [Artikel] ELSE '' END) as Modell,
    MAX(CASE WHEN [Feld.Nr]='03' THEN [Artikel] ELSE '' END) as Farbe
    FROM [Auto]
    GROUP BY [Art.Nr.]
    Viele Grüße,
    Tommi
     
  8. Dudada

    Dudada Benutzer

    Hallo Ukulele, TAUSEND-Dank!!!! Hat super geklappt. Vielen herzlichen Dank für deine Geduld mit mir.
    Du bist mit Gold nicht aufzuwiegen. Schönes Wochenende.
     
  9. ukulele

    ukulele Datenbank-Guru

    Für 85kg Gold würde ich tatsächlich so einiges tun.
     
  10. Dudada

    Dudada Benutzer

    upload_2015-5-29_13-54-20.jpeg ....dann bist du das?

    LG[​IMG]
     
  11. ukulele

    ukulele Datenbank-Guru

    Das Bild kommt meiner Figur schon sehr nahe, ich hab allerdings nicht soviel Hals.
     
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