Tento problém ve skutečnosti vypadá jednodušeji než odpověď na otázku, kterou jste propojili, což je vynikající řešení tohoto problému. Nicméně toto používá stejné hierarchické dotazy s connect by
V případě, že priority
je vždy souvislá posloupnost čísel, bude to fungovat
SELECT t.grp, level, ltrim(SYS_CONNECT_BY_PATH(state,','),',') as "set"
from t
start with priority = 1
connect by priority = prior priority + 1
and grp = prior grp
Pokud to však není vždy pravda, vyžadovali bychom row_number()
k definování sekvence na základě pořadí priority (které nemusí být po sobě jdoucí celé číslo)
with t2 AS
(
select t.*, row_number()
over ( partition by grp order by priority) as rn from t
)
SELECT t2.grp, ltrim(SYS_CONNECT_BY_PATH(state,','),',') as "set"
from t2
start with priority = 1
connect by rn = prior rn + 1
and grp = prior grp