基于列值展开Oracle查询结果并添加唯一递增ID列
基于Oracle关联层次查询实现行展开并添加组内递增ID列
现有数据表:
| col1 | col2 |
|---|---|
| a | 2 |
| b | 3 |
| c | 1 |
期望查询结果(按col2的值展开行,并添加组内从1开始递增的col3列):
| col1 | col2 | col3 |
|---|---|---|
| a | 2 | 1 |
| a | 2 | 2 |
| b | 3 | 1 |
| b | 3 | 2 |
| b | 3 | 3 |
| c | 1 | 1 |
基于原有的关联层次查询语句,只需将层次查询生成的LEVEL值作为新增的col3列返回即可,修改后的SQL语句如下:
SELECT col1, col2, num AS col3 FROM test t, TABLE( CAST( MULTISET( SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= t.col2 ) AS SYS.ODCINUMBERLIST ) ) num
说明
- 给
TABLE(...)生成的数字集合表指定别名num后,即可直接将集合内的元素作为col3取出,实现组内从1到col2的递增效果。
内容的提问来源于stack exchange,提问作者SanderV
相关产品推荐
相关产品推荐

