Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक एकल तालिका से सेट, एक कॉलम द्वारा समूहीकृत

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

डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका नाम में plsql पैरामीटर के रूप में गुजर रहा है

  2. ऑरैकल तालिका में स्थान के साथ कॉलम का नाम बदलने का प्रयास करने में त्रुटि। त्रुटि - SQL त्रुटि:ORA- 00946:कीवर्ड के लिए अनुपलब्ध

  3. कार्यबल हेडकाउंट की त्रैमासिक गणना की क्षमता

  4. पैकेज के भीतर वर्तमान में निष्पादन प्रक्रिया का नाम

  5. डायना नोड शब्द के साथ कौन आया था और उन्होंने 6,000,000 एलओसी का आंकड़ा लगभग 67108864 (2**26) डायना नोड्स कैसे लगाया?