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

पुनरावर्ती PL SQL क्वेरी सहायता

यह एक अनुपयोगी, अनुमानित उत्तर है (यदि आपने create table प्रदान किया था और insert आपके डेटा/संरचना के लिए बयान, मैंने इसका परीक्षण किया होगा)। यह मानता है कि आपकी लेन-देन तालिका में कोई शाखा नहीं है (अर्थात, वह link_trx_id अनोखा है)। मूल रूप से, हम समूहीकरण, मूल जानकारी और आदेश प्राप्त करने के लिए एक पुनरावर्ती जुड़ाव का उपयोग करते हैं, फिर एक चल रहे कुल (current_net प्राप्त करने के लिए विश्लेषणात्मक कार्यों का उपयोग करते हैं। ) पिछले कुल (जो हम कर सकते थे) प्राप्त करने का प्रयास करने के बजाय, वर्तमान पंक्ति के credit को आसानी से हटाने के लिए यह अधिक समझ में आता है और debit 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. Oracle DB दैनिक विभाजन

  2. Oracle डेटाबेस में सेलेक्ट INTO स्टेटमेंट के साथ बल्क कलेक्ट क्लॉज का उपयोग कैसे करें

  3. ट्रिगर डालने के बाद उत्परिवर्तन त्रुटि

  4. ऑरैकल डेटाबेस में फिंगरप्रिंट टेम्पलेट को कैसे स्थानांतरित करें

  5. क्या ओडीआई परिदृश्य का उपयोग करके ओडीआई पैकेज को फिर से बनाने का कोई तरीका है?