Я создал своего рода таблицу «зависимостей», содержащую все зависимости нашего ночного процесса.
Таблица выглядит так:
GRAND_MODEL | WAITtest2
MODEL_NAME
test test1
test test2
test test3
test2 test3
test3 test4
test4 test5
Эта таблица означает -> test
нужно дождаться test1
, test2
, test3
, чтобы закончить, но также нужно дождаться test4
и test5
, потому что их ждет test3/4
. test1
ничего не ждет, test2
ждет test3
и, следовательно, также test4
и, следовательно, test5
.
Таким образом, результат должен выглядеть примерно так:
FIRST_MODEL | SECOND_MODEL | THIRD_MODEL | FORTH_MODEL | FIFTH_MODEL | SIXTH_MODEL
test5 test4 test3 test2 test NULL
test5 test4 test3 test NULL NULL
test4 test3 test2 test NULL NULL
.................................
Что я пробовал:
SELECT distinct prior wait_4_model_name as first_m,
wait_4_model_name as second_m,
grand_model as third_m
from (SELECT distinct grand_model, wait_4_model_name
FROM DEL_SAGI_FOR_HIERARCHY)
connect by NOCYCLE prior grand_model = wait_4_model_name
Но это только создает первый уровень иерархии.
Заранее спасибо.
EDIT: обратите внимание, что могут быть противоположные зависимости, test
ждет test1
, а test1
ждет test
(каждая модель большая, поэтому часть модели может ожидать часть другой модели)