यह समस्या वास्तव में आपके द्वारा लिंक किए गए प्रश्न के उत्तर से सरल दिखती है, जो उस समस्या का एक उत्कृष्ट समाधान है। फिर भी, यह उसी श्रेणीबद्ध प्रश्नों का उपयोग करता है, जिसमें 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