目前我正在使用类似于以下语句的内容来创建像结构这样的临时表。
WITH CONFIGURATION AS (
SELECT 'some blah value' AS BLAH , 'some blee value' AS BLEE FROM DUAL
UNION
SELECT 'some other blah value' AS BLAH, 'some other blee value' AS BLEE FROM DUAL
)
SELECT 'BLAH BLAH' FROM CONFIGURATION C, SOME_OTHER_TABLE T WHERE C.BLAH=T.BLAH
我在这里面临的问题是,当我必须为10x7表结构实现相同的结构时,查询会变得相当大且混乱。
有没有更简单的方法可以使用DUAL
或任何其他系统表来实现此目的,而无需使用UNION
并多次重写SELECT FROM DUAL
?
注意:
- 我对此数据库没有DDL权限。否则我会创建一个表来实现这个目标
- 数据库版本为oracle 11g
- M x N结构内的数据本质上是不规则的
答案 0 :(得分:3)
也许是这样的?
select * from (
select trunc( (rownum - 1) / 3) as x, mod(rownum - 1, 3) as y, column_value
from table( dbmsoutput_linesarray(
'some blah value' , 'some blee value', 'some bluuu value',
'some other blah value', 'some other blee value', 'some other bluuu value',
'blah 5', 'blee 5', 'bluu 5',
'blah 6', 'blee 6', 'bluu 6'
))
)
pivot (
max( column_value )
for y in ( 0 as blah, 1 as blee, 2 as bluuu )
)