Spalte teilen

Werbung:
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]
 
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?
 
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.
 
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.
 
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'
 
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
 
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.
 
upload_2015-5-29_13-54-20.jpeg....dann bist du das?

LG
images
 
Werbung:
Zurück
Oben