在Sql Server中使用Pivot/unpivot将单行转换为单列
我有一个单行表格,如下所示:在Sql Server中使用Pivot/unpivot将单行转换为单列,sql,sql-server,data-analysis,unpivot,Sql,Sql Server,Data Analysis,Unpivot,我有一个单行表格,如下所示: +-------+-------+-------+-------+-------+ | (Col1)| (Col2)| (Col3)| (Col4)| (Col5)| +-------+-------+-------+-------+-------+ | Data1 | Data2 | Data3 | Data4 | Data5 | +-------+-------+-------+-------+-------+ 我想做的似乎很简单,但我在任何地方都找不到这样的
+-------+-------+-------+-------+-------+
| (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
overunpivot
。但是,它们不是100%等价的,因为unpivot
过滤掉NULL
值。您的表中是否总是只有一条记录?如果它有超过1行,你能告诉我们这是什么样子吗?请参阅关于UNOIN。答案取决于你真正使用的RDBMS。不要标记多个RDBMS,只标记您真正使用的RDBMSUNPIVOT
还是交叉应用(值(col1)、(col2…
@TimBiegeleisen),这是UNOIN查询的结果集,总是希望有单行和多列。非常有用,谢谢@Gordon Linoff