उन लोगों के लिए जिन्हें Oracle 9i (या पहले) का उपयोग करके इस समस्या को हल करना होगा, आपको शायद SYS_CONNECT_BY_PATH का उपयोग करना होगा, क्योंकि LISTAGG उपलब्ध नहीं है।
ओपी का जवाब देने के लिए, निम्नलिखित प्रश्न तालिका A से PID प्रदर्शित करेगा और तालिका B से सभी 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 नहीं है, और केवल तालिका B मौजूद है:
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;
सभी मूल्यों को वांछित के रूप में फिर से व्यवस्थित किया जा सकता है। व्यक्तिगत संक्षिप्त विवरण को विभाजन द्वारा खंड में फिर से व्यवस्थित किया जा सकता है, और PID की सूची को अंतिम ORDER BY खंड में पुन: व्यवस्थित किया जा सकता है।
वैकल्पिक रूप से: ऐसे समय हो सकते हैं जब आप पूरी तालिका से सभी मानों को एक पंक्ति में जोड़ना चाहते हैं।
यहाँ महत्वपूर्ण विचार, विवरण के समूह के लिए कृत्रिम मूल्य का उपयोग कर रहा है।
निम्नलिखित प्रश्न में, निरंतर स्ट्रिंग '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;
अलग-अलग संक्षिप्त विवरण को खंड द्वारा खंड में पुन: व्यवस्थित किया जा सकता है।
इस पृष्ठ पर कई अन्य उत्तरों ने भी इस अत्यंत उपयोगी संदर्भ का उल्लेख किया है:
https://oracle-base.com/articles/misc/string-aggregation-techniques