Работа с большой базой данных материалов, используемых в качестве «входов» для создания различных «выходов» в течение нескольких поколений.Конечный результат (продукт для рынка) может потенциально иметь более десятка поколений входов в своей истории.Каждый из этих входов имеет свою собственную запись.
В настоящее время я создаю нисходящий вид этой генеалогии (имеется в виду, начиная с конечного продукта и обратно через все входы), используя LEVEL.
Упрощенный / концептуальный пример кода следующим образом:
SELECT
OL.LOT_NAME AS output_id,
IL.LOT_NAME AS input_id,
LEVEL
FROM GENEALOGY_TABLE G
INNER JOIN LOT_TABLE OL
on G.OUTPUT_LOT_KEY = OL.LOT_KEY
INNER JOIN LOT_TABLE IL
on G.INPUT_LOT_KEY = IL.LOT_KEY
START WITH OL.LOT_NAME IN ('X', 'Y', etc...)
CONNECT BY NOCYCLE PRIOR IL.LOT_NAME = OL.LOT_NAME
ORDER BY LEVEL
Я хочу добавить еще один столбец к этой выходной таблице, который содержит исходное значение «START WITH», которое является источникомлюбая данная запись.Это означает, что даже если запись имеет уровень 10, я не только увижу вывод уровня 9, созданный этим материалом, но и какой из множества конечных продуктов («X», «Y» и т. Д. В приведенном выше примере).пример), который в конечном итоге был создан в нисходящем направлении.
Есть ли в Oracle функция, способная справиться с этим?Есть ли простой трюк для этого я скучаю?Любые предложения будут замечательными.