Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल एसक्यूएल में गतिशील धुरी

आप 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 बाइट्स तक एक स्ट्रिंग को जोड़ सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप किसी प्रश्न की व्याख्या योजना की व्याख्या कैसे करते हैं?

  2. Oracle 11 डेटाबेस से कैसे कनेक्ट करें . जाल

  3. Oracle.DataAccess.Client.OracleException ORA-03135:कनेक्शन खो गया संपर्क

  4. विंडोज़ पर MySQL स्थापित करने के लिए चरण-दर-चरण मार्गदर्शिका

  5. Oracle SqlPlus - एक फ़ाइल में आउटपुट सहेजना लेकिन स्क्रीन पर नहीं दिखाना