【发布时间】:2019-10-04 07:05:01
【问题描述】:
我有一个特定的查询,其中查询的结果包含 start_value,step,range 类型的值。我想从每个级别的 start_value 添加步骤开始创建所有可能值的列表,直到级别达到范围。 例如。
start_value = 8
step = 1
range = 5
然后我想要 (8,9,10,11,12) 作为结果。
为此,我使用以下代码,但 listagg 部分返回 null。请注意,具有别名 main_query 的查询会实时不同,并且会有多行。仅出于演示目的,我在那里使用双重。 listagg 部分也将保持不变。
select val,step,rang ,
(select listagg(colval) within group(order by colval) from
(select val + level*step as colval from dual
connect by level <= rang+1))
from
(select 1 as val , 2 as step , 3 rang from dual) main_query;
编辑:
非常感谢快速回复的人。问题是已经有一个 with 子句被 main_query 本身使用。因此,根据提出的解决方案,这将是现在
WITH main_query as (
with query_1 as
(select ... from ..),
query_2 as
(select ... from ...),
select val,step,range from
(select .... from query_1 join query_2 ....)main_query)
select <values to be created using listagg> from main_query ;
我不确定这是否可行。如果认为可行,请告诉我。
【问题讨论】: