У меня есть определенный запрос, в котором результаты запроса содержат значения start_value, step, range. Я хочу создать список всех возможных значений, начиная с шага добавления start_value на каждом уровне, пока уровень не достигнет диапазона. например.
start_value = 8
step = 1
range = 5
Тогда я хочу (8,9,10,11,12) в качестве результата.
Для этого я использую следующий код, но часть listagg возвращает ноль. Обратите внимание, что запрос с псевдонимом 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 ;
Я не уверен, сработает ли это. Пожалуйста, дайте мне знать, если считаете, что это будет.