2015-03-28 1 views

ответ

5

Вы могли бы сделать декартовых присоединиться в строк генератор запроса вы должны генерировать 3 rows. Таким образом, декартово произведение генерирует общее количество 9 rows.

Например,

SQL> WITH DATA AS 
    2 (SELECT LEVEL rn FROM dual CONNECT BY LEVEL <=3 
    3 ) 
    4 SELECT 1, A.rn L, b.rn R FROM DATA A, DATA b 
    5/

     1   L   R 
---------- ---------- ---------- 
     1   1   1 
     1   1   2 
     1   1   3 
     1   2   1 
     1   2   2 
     1   2   3 
     1   3   1 
     1   3   2 
     1   3   3 

9 rows selected. 

SQL> 
2
select 1, L, R 
    from (Select level R 
      from DUAL 
     Connect by level <=3), 
     (Select level L 
      from DUAL 
     Connect by level <=3) 
1

Вы могли бы попробовать что-то вроде этого:

SELECT 1, CEIL(lvl/3) AS l 
    , ROW_NUMBER() OVER (PARTITION BY CEIL(lvl/3) ORDER BY lvl) AS r 
    FROM (
    SELECT LEVEL AS lvl FROM dual 
    CONNECT BY LEVEL <= 9 
); 

выше избегает декартово присоединиться. See SQLFiddle here.

Смежные вопросы