如何在Oracle 11g中执行此操作?
此处的问题是DUAL
上的查询无法识别APP
表。
SELECT APP_VER || SUBVERSION.LEVEL
FROM APP,
(SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL < APP.NUM_SUBVERSIONS) SUBVERSION
答案 0 :(得分:0)
假设每个可能的子集都需要一行,你可以避免一些嵌套的问题,如下所示:
select APP_VER , NUM_SUBVERSIONS, subversions.num
from app app
inner join
( select level num
from dual
connect by level <= ( select max(num_subversions) from app)
) subversions
on (subversions.num <= num_subversions)
这需要对表进行更多扫描,因此可能效率不高,但是,根据表和列的名称,我假设您没有那么多记录可以处理。
答案 1 :(得分:0)
如果我正确理解了您的问题,您可以使用Recursive With subquerying来执行此操作:
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
jQuery=$.noConflict();
jQuery(document).ready(function() {
jQuery('.navigation dd').hide();
jQuery('.navigation dt').click(function(){
jQuery(this).next('dd').slideToggle('slow');
jQuery(this).toggleClass('glace_navigationlayer-collapsed');
});
});
</script>
示例执行:
with a1 (app_ver, num_subversions, lvl) as (
select app_ver, num_subversions, 1
from app
union all
select app.app_ver, app.num_subversions, a1.lvl + 1
from app, a1
where app.app_ver = a1.app_ver
and a1.lvl < app.num_subversions)
search depth first by app_ver, num_subversions set my_order
select app_ver || lvl
from a1;