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

Bantuan Permintaan PL SQL Rekursif

Ini adalah jawaban perkiraan yang belum teruji (jika Anda telah memberikan create table dan insert pernyataan untuk data/struktur Anda, saya akan mengujinya). Diasumsikan bahwa tidak ada percabangan dalam tabel transaksi Anda (yaitu link_trx_id unik). Pada dasarnya, kami menggunakan gabungan rekursif untuk mendapatkan pengelompokan, informasi induk, dan urutan, kemudian menggunakan fungsi analitik untuk mendapatkan total berjalan (current_net ). Daripada mencoba untuk mendapatkan total sebelumnya (yang bisa kita lakukan), tampaknya lebih masuk akal untuk hanya menghapus credit baris saat ini dan debit dari current_net .

SELECT trx_id,
       debit,
       credit,
       root_amt - cum_debit + cum_credit + debit - credit AS current_gross,
       root_amt - cum_debit + cum_credit AS current_net
FROM   (SELECT trx_id,
               debit,
               credit,
               SUM(credit) OVER (PARTITION BY event_id ORDER BY lvl) AS cum_credit,
               SUM(debit) OVER (PARTITION BY event_id ORDER BY lvl) AS cum_debit,
               root_amt
        FROM   (SELECT     trx_id,
                           debit,
                           credit,
                           LEVEL AS lvl,
                           CONNECT_BY_ROOT (gross_amount) AS root_amt,
                           CONNECT_BY_ROOT (event_id) AS event_id
                FROM       transaction t LEFT OUTER JOIN event e ON t.trx_id = e.transaction_id
                CONNECT BY link_trx_id = PRIOR trx_id
                START WITH link_trx_id IS NULL))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan semua baris tabel diperbarui setelah waktu tertentu

  2. SSIS dan mengirim kueri dengan tanggal ke Oracle

  3. Penggabungan String Agregat di Oracle 10g

  4. Membuat Layar Login Kustom Di Oracle Forms 10g

  5. buat tabel berdasarkan tipe yang ditentukan pengguna