在Sql Server中使用Pivot/unpivot转换单行到单列



我有一个表,只有一行,如下所示:

+-------+-------+-------+-------+-------+
| (Col1)| (Col2)| (Col3)| (Col4)| (Col5)|
+-------+-------+-------+-------+-------+
| Data1 | Data2 | Data3 | Data4 | Data5 |
+-------+-------+-------+-------+-------+

我想做的事情似乎很简单,但我找不到任何例子。我想要的只是将上面的行转换为单个列,如下所示:

+-------------+
|(Column Name)|
+-------------+
|Data1        |
+-------------+
|Data2        |
+-------------+
|Data3        |
+-------------+
|Data4        |
+-------------+
|Data5        |
+-------------+

谢谢你的帮助。

我建议使用apply:

select v.col
from t cross apply
(values (col1), (col2), (col3), (col4), (col5)) v(col);

我强烈推荐apply而不是unpivot。但是,它们不是100%等效的,因为unpivot过滤掉了NULL的值。

最新更新