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

nilai kolom berturut-turut

Jika Anda menggunakan 11.2 daripada hanya 11.1, Anda dapat menggunakan LISTAGG fungsi agregat

SELECT listagg( interval, ',' ) 
         WITHIN GROUP( ORDER BY interval )
  FROM (SELECT DISTINCT range AS interval
          FROM table_name
         WHERE age = 62)

Jika Anda menggunakan Oracle versi sebelumnya, Anda dapat menggunakan salah satu Teknik agregasi string Oracle di halaman Tim Hall. Sebelum 11.2, preferensi pribadi saya adalah membuat ditentukan pengguna fungsi agregat sehingga Anda dapat

SELECT string_agg( interval )
  FROM (SELECT DISTINCT range AS interval
              FROM table_name
             WHERE age = 62)

Namun, jika Anda tidak ingin membuat fungsi, Anda dapat menggunakan ROW_NUMBER dan SYS_CONNECT_BY_PATH pendekatan meskipun itu cenderung sedikit lebih sulit untuk diikuti

with x as (
  SELECT DISTINCT range AS interval
          FROM table_name
         WHERE age = 62 )
select ltrim( max( sys_connect_by_path(interval, ','))
                keep (dense_rank last order by curr),
              ',') range
  from (select interval,
               row_number() over (order by interval) as curr,
               row_number() over (order by interval) -1 as prev
          from x)
connect by prev = PRIOR curr
  start with curr = 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sqlplus oracle :Bagaimana saya bisa menjalankan perintah sql di bash dalam 1 baris?

  2. Pengembang SQL untuk mengimpor dari Excel

  3. Kesalahan Oracle Saat Membuat Tampilan - ORA-01720

  4. Pertarungan Urutan RAC

  5. Oracle sql bukan grup dengan ekspresi saat menghitung