उन लोगों के लिए जिन्हें ओरेकल 9आई (या इससे पहले) का उपयोग करके इस समस्या को हल करना होगा, आपको शायद SYST_CONNECT_BY_PATH का उपयोग करने की आवश्यकता होगी, क्योंकि LISTAGG उपलब्ध नहीं है।
ओपी उत्तर देने के लिए, निम्न क्वेरी तालिका A से पीआईडी को प्रदर्शित करने और टेबल बी से सभी DESC स्तंभ जोड़ देगा:
SELECT pid, SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY pid ORDER BY pid, seq) rnum, pid, description
FROM (
SELECT a.pid, seq, description
FROM table_a a, table_b b
WHERE a.pid = b.pid(+)
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR pid = pid
GROUP BY pid
ORDER BY pid;
वहाँ भी मामलों में जहां कुंजी और मूल्यों सभी एक में निहित हैं हो सकता है तालिका। जहां कोई तालिका A निम्न क्वेरी इस्तेमाल किया जा सकता है, और केवल तालिका बी मौजूद है: के रूप में वांछित
SELECT pid, SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY pid ORDER BY pid, seq) rnum, pid, description
FROM (
SELECT pid, seq, description
FROM table_b
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR pid = pid
GROUP BY pid
ORDER BY pid;
सभी मान पुनर्क्रमित जा सकता है। व्यक्तिगत समेकित विवरण को खंड द्वारा भाग में पुन: व्यवस्थित किया जा सकता है, और पीआईडी की सूची अंतिम ORDER द्वारा खंड में पुन: व्यवस्थित की जा सकती है।
वैकल्पिक: कई बार जब आप एक पंक्ति में एक संपूर्ण तालिका से सभी मूल्यों को श्रेणीबद्ध करने के लिए चाहते हो सकता है।
यहां महत्वपूर्ण विचार वर्णन के समूह के लिए कृत्रिम मूल्य का उपयोग कर रहा है।
निम्न क्वेरी, निरंतर स्ट्रिंग '1' में प्रयोग किया जाता है, लेकिन किसी भी मूल्य काम करेगा:
SELECT SUBSTR (MAX (SYS_CONNECT_BY_PATH (description, ', ')), 3) all_descriptions
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY unique_id ORDER BY pid, seq) rnum, description
FROM (
SELECT '1' unique_id, b.pid, b.seq, b.description
FROM table_b b
)
)
START WITH rnum = 1
CONNECT BY PRIOR rnum = rnum - 1;
व्यक्तिगत श्रेणीबद्ध विवरण BY खंड विभाजन में पुनर्क्रमित जा सकता है। https://oracle-base.com/articles/misc/string-aggregation-techniques
उदाहरण के लिए देखें: http://halisway.blogspot.com/2006/08/oracle-groupconcat-updated-again.html – Andomar
कृपया [इस समाधान] देखो (https://stackoverflow.com/a/19348687/2459039)। यह आपके लिए उपयोगी होगा। ओरेकल 10 जी के लिए wm_concat() का उपयोग करके –