Oracle - 从双

时间:2016-01-26 14:23:12

标签: sql oracle oracle11g

目前我正在使用类似于以下语句的内容来创建像结构这样的临时表。

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结构内的数据本质上是不规则的
  •   

1 个答案:

答案 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 )
)