2013-11-13 4 views
0

Предположим, что у меня есть набор данных, какВыберите повторяющиеся данные на основе значения столбца

---------------------- 
col1 | col2 | col3 | 
---------------------- 
    a  b  3 
    c  d  2 
---------------------- 

Теперь Есть ли способ в SQL, чтобы выбрать

---------------------- 
colx | coly | colz | 
---------------------- 
    a  b  1 
    a  b  2 
    a  b  3 
    c  d  1 
    c  d  2 
---------------------- 

т.е. col1 и col2 повторное COL3 число раз.

ответ

0

Пожалуйста, попробуйте:

with T (colx , coly , colz , mxcol3) as 
(
    select col1, col2, 1 col3, max(col3) over (partition by col1, col2) mxcol3 
    from YourTab 

    union all 

    select colx , coly , colz +1 colz , mxcol3 
    from T 
    where colz +1<=mxcol3 
) 
select 
    colx, coly, colz 
From T 
order by colx, coly, colz; 
0

Если вы используете 11gR2, вы можете использовать рекурсивное ОТВ.

with cte(x,y,z) as (
    select col1, col2, col3 --select all the records from the table 
    from table_name 

    union all 

    select x, y, z-1   --select previously selected rows and decrement the col3 by 1 
    from cte    --until the col3 becomes 1 
    where z > 1 
) 
select * 
    from cte 
order by x,y,z;