Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Set Dari Satu Tabel, Dikelompokkan Berdasarkan Kolom

Masalah ini sebenarnya terlihat lebih sederhana daripada jawaban atas pertanyaan yang Anda tautkan, yang merupakan solusi yang sangat baik untuk masalah itu. Namun demikian, ini menggunakan kueri hierarkis yang sama, dengan connect by

Jika itu masalahnya priority selalu merupakan urutan angka yang berkesinambungan, ini akan berhasil

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

Namun, jika itu tidak selalu benar, kami memerlukan row_number() untuk menentukan urutan berdasarkan urutan prioritas ( yang tidak perlu bilangan bulat berurutan)

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

DEMO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. %ENV tidak berfungsi dan saya tidak dapat menggunakan perpustakaan bersama

  2. Operator relasional tidak valid

  3. Menggunakan kueri SQL untuk menentukan apakah ada tabel

  4. Asp Classic Connection String 500 - Kesalahan server internal

  5. Oracle SQL - Bagaimana saya bisa memanggil fungsi pipelined ODCI menggunakan JSP