使用 Sql 服务器中的 Pivot/unpivot 将单行转换为单列

Convert Single Row To Single Column Using Pivot/unpivot In Sql Server

我有一个 table 单行如下:

+-------+-------+-------+-------+-------+
| (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 个值。