SQL - Spalten sortieren bzw. Reihenfolge ändern
Hallo zusammen,
ich habe eine SQL Tabelle mit unter anderem folgenden Spalten:
NoteID, tmpNote1, tmpDim1, tmpNote2, tmpDim2, tmpNote3, tmpDim3, tmpNote4, tmpDim4, Note1, Note2, Note3, Note4
In NoteID sind vier Werte hinterlegt:
D Ist Produkt Werk
Diese Werte geben an, welchen Dimensionen ein Eintrag zugeordnet ist. Insgesamt gibt es hier vier Stück. Die werden in einzelne Spalten aufgeteilt:
tmpNote1 = D
tmpNote2 = Ist
tmpNote3 = Produkt
tmpNote4 = Werk
Dummerweise sind die Werte in der Spalte NoteID alphabetisch geordnet. Es kann also sein, dass Dimension 3 an erster Stelle steht und Dimension 1 an letzter. Welche Dimension es ist, ist in einer extra Spalte gespeichert:
tmpDim1 = 3
tmpDim2 = 1
tmpDim3 = 4
tmpDim4 = 2
Ich möchte das ganze jetzt sortieren und in die Spalten Note1, Note2, Note3 und Note4 einfügen.
Note1 = Ist
Note2 = Werk
Note3 = D
Note4 = Produkt
So bekomme ich überall dieselbe Reihenfolge und kann das später besser sortieren und darstellen.
Ich habe das mal in Excel zusammengetippt, so wird es hoffentlich etwas verständlicher.
Das Problem an der Sache ist, ich habe nur SQL zur Verfügung. Es muss also irgendwie mit einem SQL Script funktionieren. Ich habe es probiert mit einem UPDATE Befehl, der über CASE WHEN abfragt, welche Dimension vorhanden ist. Allerdings bekomme ich dann dieselbe Dimension in jeden Datensatz eingetragen. Auch mit JOIN bin ich nicht weiter gekommen. Im Einsatz ist der MS SQL Server 2012.
Funktioniert sowas in SQL überhaupt? Wäre super, wenn mir jemand weiterhelfen könnte
Danke schon mal im Voraus!
Viele Grüße
Ines
ich habe eine SQL Tabelle mit unter anderem folgenden Spalten:
NoteID, tmpNote1, tmpDim1, tmpNote2, tmpDim2, tmpNote3, tmpDim3, tmpNote4, tmpDim4, Note1, Note2, Note3, Note4
In NoteID sind vier Werte hinterlegt:
D Ist Produkt Werk
Diese Werte geben an, welchen Dimensionen ein Eintrag zugeordnet ist. Insgesamt gibt es hier vier Stück. Die werden in einzelne Spalten aufgeteilt:
tmpNote1 = D
tmpNote2 = Ist
tmpNote3 = Produkt
tmpNote4 = Werk
Dummerweise sind die Werte in der Spalte NoteID alphabetisch geordnet. Es kann also sein, dass Dimension 3 an erster Stelle steht und Dimension 1 an letzter. Welche Dimension es ist, ist in einer extra Spalte gespeichert:
tmpDim1 = 3
tmpDim2 = 1
tmpDim3 = 4
tmpDim4 = 2
Ich möchte das ganze jetzt sortieren und in die Spalten Note1, Note2, Note3 und Note4 einfügen.
Note1 = Ist
Note2 = Werk
Note3 = D
Note4 = Produkt
So bekomme ich überall dieselbe Reihenfolge und kann das später besser sortieren und darstellen.
Ich habe das mal in Excel zusammengetippt, so wird es hoffentlich etwas verständlicher.
Das Problem an der Sache ist, ich habe nur SQL zur Verfügung. Es muss also irgendwie mit einem SQL Script funktionieren. Ich habe es probiert mit einem UPDATE Befehl, der über CASE WHEN abfragt, welche Dimension vorhanden ist. Allerdings bekomme ich dann dieselbe Dimension in jeden Datensatz eingetragen. Auch mit JOIN bin ich nicht weiter gekommen. Im Einsatz ist der MS SQL Server 2012.
Funktioniert sowas in SQL überhaupt? Wäre super, wenn mir jemand weiterhelfen könnte
Danke schon mal im Voraus!
Viele Grüße
Ines
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 234455
Url: https://administrator.de/forum/sql-spalten-sortieren-bzw-reihenfolge-aendern-234455.html
Ausgedruckt am: 09.01.2025 um 03:01 Uhr
2 Kommentare
Neuester Kommentar
Hallo Ines,
ich frag mal lieber nicht, für was man sowas braucht. Mit SQL kann man das jedenfalls machen und mit case warst Du auch gut gelegen:
Gruß, Mad Max
ich frag mal lieber nicht, für was man sowas braucht. Mit SQL kann man das jedenfalls machen und mit case warst Du auch gut gelegen:
update Tabelle
set Note1 = case when tmpDim1 = 1 then tmpNote1 when tmpDim2 = 1 then tmpNote2 when tmpDim3 = 1 then tmpNote3 when tmpDim4 = 1 then tmpNote4 else '' end,
Note2 = case when tmpDim1 = 2 then tmpNote1 when tmpDim2 = 2 then tmpNote2 when tmpDim3 = 2 then tmpNote3 when tmpDim4 = 2 then tmpNote4 else '' end,
Note3 = case when tmpDim1 = 3 then tmpNote1 when tmpDim2 = 3 then tmpNote2 when tmpDim3 = 3 then tmpNote3 when tmpDim4 = 3 then tmpNote4 else '' end,
Note4 = case when tmpDim1 = 4 then tmpNote1 when tmpDim2 = 4 then tmpNote2 when tmpDim3 = 4 then tmpNote3 when tmpDim4 = 4 then tmpNote4 else '' end
Gruß, Mad Max