Oracle में MySQL के GROUP_CONCAT जैसा कोई फ़ंक्शन नहीं है, जो ठीक वही कार्यक्षमता है जिसे आप पूछ रहे हैं। इस पेज पर इस तरह के स्ट्रिंग एग्रीगेशन के लिए कई विकल्प दिए गए हैं - एक कस्टम फ़ंक्शन का उपयोग करना है:
CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT subject_key
FROM MYTABLE
WHERE primary_key = IN_PK) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
तब आप इसे इस तरह इस्तेमाल करेंगे:
SELECT get_subjectkey(?) AS subject_key
FROM DUAL
... "?" की जगह प्राथमिक कुंजी मान के साथ।
पहले
मान लें कि आप केवल कॉलम मान के अंत में अल्पविराम जोड़ना चाहते हैं, इसका उपयोग करें:
SELECT DISTINCT TO_CHAR(subject_key) || ','
FROM MYTABLE
डबल पाइप -- "||" -- Oracle [, PostgreSQL और अब ANSI] SQL में स्ट्रिंग्स को जोड़ने का साधन है। मैंने डेटा प्रकार को स्पष्ट रूप से परिवर्तित करने के लिए TO_CHAR का उपयोग किया था, लेकिन आप इसका उपयोग कर सकते थे:
SELECT DISTINCT subject_key || ','
FROM MYTABLE
...यदि यह आवश्यक नहीं है।