Questo problema in realtà sembra più semplice della risposta alla domanda che hai collegato, che è un'ottima soluzione a quel problema. Tuttavia, questo utilizza le stesse query gerarchiche, con connect by
Se è il caso che priority
è sempre una sequenza continua di numeri, funzionerà
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
Tuttavia, se ciò non è sempre vero, avremmo bisogno di row_number()
per definire la sequenza in base all'ordine di priorità (che non deve essere necessariamente intero consecutivo)
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