Този проблем всъщност изглежда по-прост от отговора на въпроса, който сте свързали, което е отлично решение на този проблем. Независимо от това, това използва същите йерархични заявки, с connect by
Ако случаят е такъв, че priority
винаги е непрекъсната последователност от числа, това ще работи
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
Ако обаче това не винаги е вярно, ще изискваме row_number()
за дефиниране на последователността въз основа на реда на приоритет (който не е необходимо да бъде последователно цяло число)
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