我有一张看起来像这样的表
col1 | col2
-----------
1 | a
2 | b
3 | c
我希望运行一个看起来像这样的查询
val | colname
-------------
1 | col1
2 | col1
3 | col1
a | col2
b | col2
c | col2
我读过关于unpivot的文章,我已经找到了how to get the column names。这是我目前正在处理的查询。
SELECT
*
FROM
myTable
UNPIVOT (
val
FOR
column_name
IN (
SELECT
column_name
FROM
USER_TAB_COLUMNS
WHERE
table_name = 'myTable'
)
)
答案 0 :(得分:2)
除非我遗漏了什么,否则为什么不能使用它。 UNPIVOT
要求所有数据都属于同一类型,因此您需要根据需要绘制数据:
select value, colName
from
(
select to_char(col1) col1,
col2
from yourtable
)
unpivot
(
value
for colName in (col1, col2)
)
order by value
结果:
| VALUE | COLNAME |
-------------------
| 1 | COL1 |
| 2 | COL1 |
| 3 | COL1 |
| a | COL2 |
| b | COL2 |
| c | COL2 |