Учитывая это, начиная КТР:Коррелированный ряд генерирующий запрос в Oracle
WITH Sections AS (
SELECT 1 Section, 1 StartUnit, 5 EndUnit FROM DUAL
UNION ALL SELECT 2, 0, 2 FROM DUAL
UNION ALL SELECT 3, 1, 1 FROM DUAL
),
Как создать результирующий набор, который имеет столько строк в строки в секции, есть число между StartUnit и EndUnit (включительно), со значениями возрастания?
То есть, я хотел бы видеть результирующий набор:
Section Unit
1 1
1 2
1 3
1 4
1 5
2 0
2 1
2 2
3 1
Обратите внимание, что некоторые из значений в разделах КТР будут параметры, так что это не так просто, как расширение моих Союзов к правый номер.
UPDATE
Я думал об этом немного больше, и есть еще один ориентир. Я отвечу на любой ответ, но я надеюсь, что кто-то сможет показать, как это сделать с помощью CONNECT BY PRIOR и без дополнительного CTE в середине ...
Я понял, что могу изменить CTE на этот :
WITH Sections AS (
SELECT 1 Section, LEVEL Unit FROM DUAL CONNECT BY LEVEL <= 5
UNION ALL SELECT 2, LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 3
UNION ALL SELECT 3, 1 FROM DUAL CONNECT BY LEVEL <= 1
)
Но я отступаю от этого, потому что он может быть из таблицы, а не из DUAL. Итак, давайте предположим Разделы КТР по сути простой запрос из таблицы, что-то вроде:
SELECT Section, StartUnit, EndUnit FROM SectionData WHERE CallerID = 7
И первоначальный вопрос все еще стоит.
Спасибо за ответ. Можете ли вы придумать любой способ сделать это без вмешательства CTE, возможно, используя CONNECT BY PRIOR или что-то еще? – ErikE
Нет, я не могу, извините. –
Хорошо, спасибо за попытку. – ErikE