将一行转换为多行Oracle

时间:2010-02-26 19:55:21

标签: sql oracle transpose

我的查询始终返回一行,其中多个列。我想把它变成2列和多行。

原始结果:

Col1, Col2, Col3, Col4
----------------------
val1, val2, val3, val4

我想要的是什么:

ColName, Value
--------------
Col1,    val1
Col2,    val2
Col3,    val3
Col4,    val4

这可能吗?

编辑(澄清)

我正在寻找一种自动执行此操作的方法。 IE我可以从任何只返回1行的查询中传递结果。

3 个答案:

答案 0 :(得分:3)

确定。做

select 'Col1' ColName, Col1 Value from srctable union all
select 'Col2', Col2 from srctable union all
select 'Col3', Col3 from srctable union all
select 'Col4', Col4 from srctable

答案 1 :(得分:2)

您使用的是Oracle 11g吗?你尝试过pivot和unpivot吗?

更多信息here

答案 2 :(得分:0)

我猜你没有带有Pivot表支持的Oracle版本。不幸的是,它不是非常干净的代码,因为你必须建立每一行。

请参阅此旧帖子以获取示例

transpose-select-results-with-oracle