SELECT 语句将列转换为行
SELECT statement to convert columns into rows
我们有一个包含一行四列的结果集:
value1, value2, value3, value4
如何变成四行一列的结果集:
value1
value2
value3
value4
如果列已知:
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
只要您使用的是 SQL 2005 或更高版本,您就可以使用 UNPIVOT
SELECT value
FROM (SELECT a, b, c, d FROM myTable) as x
UNPIVOT (value FOR vx IN (a,b,c,d)) as p
另请参阅 TechNetUsing PIVOT and UNPIVOT
UNPIVOT 数据的另一种方法是使用 CROSS APPLY:
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);
见Demo
我们有一个包含一行四列的结果集:
value1, value2, value3, value4
如何变成四行一列的结果集:
value1
value2
value3
value4
如果列已知:
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
只要您使用的是 SQL 2005 或更高版本,您就可以使用 UNPIVOT
SELECT value
FROM (SELECT a, b, c, d FROM myTable) as x
UNPIVOT (value FOR vx IN (a,b,c,d)) as p
另请参阅 TechNetUsing PIVOT and UNPIVOT
UNPIVOT 数据的另一种方法是使用 CROSS APPLY:
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);
见Demo