2016-07-01 13 views
1

ich einen Tisch im folgenden Format haben enter image description here Ich muss es diesem FormatSQL: Konvertieren Sie mehrere Spalten in Zeilen

enter image description here

SO grundsätzlich mehrere Spalten in Zeilen konvertieren i konvertieren suchen. Kann mir jemand dabei helfen?

Dank

+1

Verwenden Sie anstelle von Bildern bitte ein Nur-Text-Format für Beispieldaten. –

+0

Nachschlagen 'UNPIVOT' –

Antwort

3

versuchen

select * 
    from yourTable 
    unpivot (
    Value 
    for NewCol in (Value1, Value2, Value3,Value4, Value5) 
) up 
+0

Danke nazark, das funktioniert für mich. schätze die Hilfe hier. –

0

Spalten in Zeilen umwandeln wird unpivoting genannt. Zeilen werden in Spalten umgewandelt.

Ein Ansatz zum Aufheben von Daten besteht darin, die apply operator mit einer table value constructor zu kombinieren.

In diesem Beispiel wird common table expression (CTE) verwendet, um 3 Beispieldatensätze zurückzugeben.

Id ColumnOne ColumnTwo ColumnThree 
1 a   b   c 
2 d   e   f 
3 g   h   i 

Beispiel

-- Unpivoting with apply and VALUES.   
WITH SampleData AS 
    (
     /* This CTE returns 3 sample records. 
     */    
     SELECT 
      cte.* 
     FROM 
      (
       VALUES 
        (1, 'a', 'b', 'c'), 
        (2, 'd', 'e', 'f'), 
        (3, 'g', 'h', 'i') 
      ) AS cte(Id, ColumnOne, ColumnTwo, ColumnThree) 
    ) 
SELECT 
    sd.Id, 
    ca.* 
FROM 
    SampleData AS sd 
     CROSS APPLY 
      (
       VALUES 
        (ColumnOne), 
        (ColumnTwo), 
        (ColumnThree) 
      ) AS ca (ColumnFour) 
; 

Der zurück Ausgang dieses wie folgt aussieht:

Id ColumnFour 
1 a 
1 b 
1 c 
2 d 
2 e 
2 f 
3 g 
3 h 
3 i 

Persönlich bevorzuge ich @ Ansatz der nazark. Die Verwendung des Operators UNPIVOT hilft anderen, die Absicht Ihres Codes zu verfolgen. Wenn diese Antwort Ihnen geholfen hat, bitte accept it. Akzeptieren von Antworten belohnt den Beitragenden für seine/ihre Bemühungen und hilft anderen Menschen mit dem gleichen Problem, eine funktionierende Antwort zu finden.

+0

Danke, dass Sie all das erklärt haben. Die Reaktion von nazark hat mir geholfen, die gewünschten Ergebnisse zu erzielen –

Verwandte Themen