使用 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
个值。
我有一个 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
个值。