Transpose one row into many rows Oracle

一曲冷凌霜 提交于 2019-12-19 09:49:13

问题


I have a query that always returns one row, with many columns. I would like to turn this into 2 columns and many rows.

Original results:

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

What I want:

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

Is this possible?

EDIT (clarification)

I'm looking for an automatic way of doing this. IE something I can pass results from any query that only returns 1 line.


回答1:


Are you using Oracle 11g? Did you try pivot and unpivot?

More info here.




回答2:


sure. Do

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



回答3:


I'm guessing you don't have the Oracle version with build in Pivot table support. Unfortunately it's never very clean code, as you have to build up each row.

See this older post for an example

transpose-select-results-with-oracle



来源:https://stackoverflow.com/questions/2344403/transpose-one-row-into-many-rows-oracle

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!