Det här problemet ser faktiskt enklare ut än svaret på frågan du länkade, vilket är en utmärkt lösning på det problemet. Ändå använder detta samma hierarkiska frågor, med connect by
Om det är så att priority
är alltid en kontinuerlig sekvens av siffror, kommer detta att fungera
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
Men om det inte alltid är sant, skulle vi kräva row_number()
för att definiera sekvensen baserat på prioritetsordningen (som inte behöver vara ett heltal i följd)
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