日期:2014-05-16  浏览次数:20335 次

[整理]一行变多行(Oracle)
来源:http://www.itpub.net/thread-1156433-1-1.html
cjh2000提问:
现有数据表中的数据形式为: 
      名称  数量  单价
       a       4      10
       b       2       8
现在能否通过一个SQL语句将其变成:
      名称     数量      单价
       a             1              10
       a             1              10
       a             1              10
       a             1              10
       b             1               8
       b             1               8   

grova解答:
SQL> create table tt(name varchar2(10),num number,price number);


表已创建。

SQL> insert into tt values('a',4,10);


已创建 1 行。

SQL> insert into tt values('b',2,8);


已创建 1 行。

SQL> commit;


SQL> select name,1 num,price
  2  from tt,(select rownum rn from dual connect by level<=5)
  3  where rn between 1 and num
  4  order by name;


NAME              NUM      PRICE
---------- ---------- ----------
a                   1         10
a                   1         10
a                   1         10
a                   1         10
b                   1          8
b                   1          8

已选择6行。

atgc解答:
SQL> select * from test;


NA         F1         F2
-- ---------- ----------
a           4         10
b           2&