我有一个表,只有一行,如下所示:
+-------+-------+-------+-------+-------+
| (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
的值。