SELECT-statement, um Spalten in Zeilen umzuwandeln

Wir haben eine Ergebnismenge, die eine Zeile mit vier Spalten hat:

value1, value2, value3, value4 

Wie können wir es zu einer Ergebnismenge machen, die vier Zeilen mit einer Spalte hat:

 value1 value2 value3 value4 

Solange Sie SQL 2005 oder später verwenden, können Sie UNPIVOT verwenden

 SELECT value FROM (SELECT a, b, c, d FROM myTable) as x UNPIVOT (value FOR vx IN (a,b,c,d)) as p 

Siehe auch PIVOT und UNPIVOT auf TechNet verwenden

Sind die Spalten bekannt:

 SELECT Value FROM( SELECT Value = value1 FROM dbo.TableName UNON ALL SELECT Value = value2 FROM dbo.TableName UNON ALL SELECT Value = value3 FROM dbo.TableName UNON ALL SELECT Value = value4 FROM dbo.TableName ) X ORDER BY VALUE -- in case you want that 

Ein anderer path zu UNPIVOT-data wäre, CROSS APPLY zu verwenden:

 select value from (Your select statement) as x cross apply ( select 'value1', value1 union all select 'value2', value2 union all select 'value3', value3 union all select 'value4', value4 ) c (ColumnName, value); 

Siehe Demo