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

Menghitung baris dalam gabungan dalam

Anda tidak memerlukan gabungan bagian dalam ke tabel dummy atau fungsi analitik untuk menghasilkan nomor baris; Anda bisa menggunakan connect by (dan fungsi level yang sesuai) di tabel itu sendiri, seperti:

WITH tst_dim_ban_selected AS (SELECT 1 ban_key, 'a' cust_fullname, 3 n FROM dual UNION ALL
                              SELECT 2 ban_key, 'b' cust_fullname, 4 n FROM dual)
-- end of mimicking your table with data in it. See SQL below
SELECT db.ban_key,
       db.cust_fullname,
       LEVEL row_num
FROM   tst_dim_ban_selected db
CONNECT BY LEVEL <= db.n
           AND PRIOR db.ban_key = db.ban_key -- assuming this is the primary key
           AND PRIOR sys_guid() IS NOT NULL;

   BAN_KEY CUST_FULLNAME    ROW_NUM
---------- ------------- ----------
         1 a                      1
         1 a                      2
         1 a                      3
         2 b                      1
         2 b                      2
         2 b                      3
         2 b                      4

Jika Anda memiliki kolom selain ban_key di kunci utama tabel, Anda perlu memastikan kolom tersebut disertakan dalam daftar klausa connect by prior <column> = <column> s. Ini agar penghubung dapat mengidentifikasi setiap baris secara unik, artinya itu perulangan hanya di atas baris itu dan tidak ada yang lain. PRIOR sys_guid() IS NOT NULL diperlukan untuk mencegah terjadinya loop by loop.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah fungsi EXTRACT Oracle melanggar NOENTITYESCAPING di XMLELEMENT?

  2. jBPM 6.5 + Tomcat 8 + Transaksi Bitronix + konfigurasi Oracle 11G | Tidak dapat melakukan sesi java.lang.NullPointerException

  3. insert massal dari Java ke Oracle

  4. Bagaimana cara meningkatkan otomatis Id dalam kunci utama komposit di Hibernate?

  5. Hitung jarak antara dua titik panjang lat di Oracle