आप PIVOT XML का उपयोग किए बिना PIVOT के IN स्टेटमेंट में डायनेमिक स्टेटमेंट नहीं डाल सकते हैं, जो वांछित आउटपुट से कुछ कम आउटपुट करता है। हालांकि, आप एक IN स्ट्रिंग बना सकते हैं और इसे अपने स्टेटमेंट में इनपुट कर सकते हैं।
सबसे पहले, यह मेरी नमूना तालिका है;
myNumber myValue myLetter
---------- ---------- --------
1 2 A
1 4 B
2 6 C
2 8 A
2 10 B
3 12 C
3 14 A
अपने IN स्टेटमेंट में उपयोग करने के लिए पहले स्ट्रिंग को सेटअप करें। यहां आप स्ट्रिंग को "str_in_statement" में डाल रहे हैं। हम स्ट्रिंग को सेटअप करने के लिए COLUMN NEW_VALUE और LISTAGG का उपयोग कर रहे हैं।
clear columns
COLUMN temp_in_statement new_value str_in_statement
SELECT DISTINCT
LISTAGG('''' || myLetter || ''' AS ' || myLetter,',')
WITHIN GROUP (ORDER BY myLetter) AS temp_in_statement
FROM (SELECT DISTINCT myLetter FROM myTable);
आपकी स्ट्रिंग इस तरह दिखेगी:
'A' AS A,'B' AS B,'C' AS C
अब अपनी PIVOT क्वेरी में स्ट्रिंग स्टेटमेंट का उपयोग करें।
SELECT * FROM
(SELECT myNumber, myLetter, myValue FROM myTable)
PIVOT (Sum(myValue) AS val FOR myLetter IN (&str_in_statement));
यहाँ आउटपुट है:
MYNUMBER A_VAL B_VAL C_VAL
---------- ---------- ---------- ----------
1 2 4
2 8 10 6
3 14 12
हालांकि सीमाएं हैं। आप केवल 4000 बाइट्स तक एक स्ट्रिंग को जोड़ सकते हैं।