表t1中列(number类型)中有数据
3,
5,
2。。。还有更多数据
要通过一个sql语句实现如下结果:
a rownum
--- ------------
3 1
3 2
3 3
5 1
5 2
5 3
5 4
5 5
2 1
2 2
也就是说,要按照列a的值n将该行数据展开成n行。实际上,这个问题和http://ningoo.itpub.net/post/2149/260758中的问题有相似之处,所以也可以用同样的思路来处理。
select">SYS@ning>select * from test;
ID
----------
3
2
5
2 from test a,
3 (select level l from dual connect by level<=(select max(id) from test)) b
4 where a.id>=b.l;
ID L
---------- ----------
3 1
3 2
3 3
2 1
2 2
5 1
5 2
5 3
5 4
5 5
10 rows selected.
利用connect by先构造出最大a值的一个连续序列,然后join原表得到最终结果。