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

एक आंतरिक जुड़ाव में पंक्तियों की गणना करना

पंक्ति संख्या उत्पन्न करने के लिए आपको डमी टेबल या विश्लेषणात्मक फ़ंक्शन में आंतरिक शामिल होने की आवश्यकता नहीं है; आप टेबल पर ही कनेक्ट बाय (और इसके संबंधित स्तर के फ़ंक्शन) का उपयोग कर सकते हैं, जैसे:

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

यदि आपके पास तालिका की प्राथमिक कुंजी में Ban_key के अलावा अन्य कॉलम हैं, तो आपको यह सुनिश्चित करना होगा कि वे prior <column> = <column> की कनेक्ट बाय क्लॉज की सूची में शामिल हैं। एस। ऐसा इसलिए है कि कनेक्ट बाय प्रत्येक पंक्ति को विशिष्ट रूप से पहचान सकता है, जिसका अर्थ है कि यह उस पंक्ति के ठीक ऊपर लूपिंग है और कोई अन्य नहीं। PRIOR sys_guid() IS NOT 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 में ऑटो-इन्क्रीमेंट

  2. बाइंड वैरिएबल का उपयोग करके गतिशील रूप से टेबल और कॉलम नाम पास करना

  3. Oracle में लूप के लिए कर्सर

  4. Oracle में TO_NUMBER फ़ंक्शन के साथ अजीब समस्या आ रही है

  5. ओरेकल:XMLElement () के साथ किसी विशिष्ट नामस्थान में तत्व कैसे बनाएं