पंक्ति संख्या उत्पन्न करने के लिए आपको डमी टेबल या विश्लेषणात्मक फ़ंक्शन में आंतरिक शामिल होने की आवश्यकता नहीं है; आप टेबल पर ही कनेक्ट बाय (और इसके संबंधित स्तर के फ़ंक्शन) का उपयोग कर सकते हैं, जैसे:
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
लूप द्वारा कनेक्ट होने से रोकने के लिए आवश्यक है।