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

एसक्यूएल का उपयोग कर ओरेकल में गतिशील कॉलम

मुझे लगता है कि यह संभव है, हालांकि काफी जटिल है, एक पाइपलाइन तालिका फ़ंक्शन जो एक चर संरचना देता है . आपका पाइपलाइन टेबल फ़ंक्शन Oracle डेटा कार्ट्रिज इंटरफ़ेस और AnyDataSet प्रकार के जादू का उपयोग रनटाइम पर एक गतिशील संरचना को वापस करने के लिए करेगा। इसके बाद आप इसे बाद के SQL कथनों में उपयोग कर सकते हैं जैसे कि यह एक तालिका थी, अर्थात

SELECT *
  FROM TABLE( your_pipelined_function( p_1, p_2 ));

कुछ और संदर्भ जो समान नमूना कार्यान्वयन पर चर्चा करते हैं

  • डायनामिक SQL पिवोटिंग
  • ए>
  • इंटरफ़ेस दृष्टिकोण लागू करना Oracle डेटा कार्ट्रिज डेवलपर गाइड का अनुभाग
  • Method4. ओपन सोर्स पीएल/एसक्यूएल कोड को डाउनलोड और इंस्टॉल करने के बाद, यहां एक पूर्ण कार्यान्वयन है:

    --Create sample table.
    create table branch_data as
    select '100' BranchName,'1001010' CustomerNo from dual   UNION ALL 
    select '100' BranchName,'1001011' CustomerNo from dual   UNION ALL 
    select '103' BranchName,'1001012' CustomerNo from dual   UNION ALL 
    select '104' BranchName,'1001013' CustomerNo from dual   UNION ALL 
    select '104' BranchName,'1001014' CustomerNo from dual   UNION ALL 
    select '104' BranchName,'1001015' CustomerNo from dual   UNION ALL 
    select '105' BranchName,'1001016' CustomerNo from dual   UNION ALL 
    select '105' BranchName,'1001017' CustomerNo from dual   UNION ALL 
    select '106' BranchName,'1001018' CustomerNo from dual;
    
    --Create a dynamic pivot in SQL.
    select *
    from table(method4.dynamic_query(
        q'[
            --Create a select statement
            select
                --The SELECT:
                'select'||chr(10)||
                --The column list:
                listagg(
                    replace(q'!sum(case when BranchName = '#BRANCH_NAME#' then 1 else 0 end) "#BRANCH_NAME#"!', '#BRANCH_NAME#', BranchName)
                    , ','||chr(10)) within group (order by BranchName)||chr(10)||
                --The FROM:
                'from branch_data' v_sql
            from
            (
                --Distinct BranchNames.
                select distinct BranchName
                from branch_data
            )
        ]'
    ));
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cx_Oracle और अपवाद हैंडलिंग - अच्छे अभ्यास?

  2. एक वर्चर कॉलम को SQL में एकाधिक मानों के रूप में कैसे विभाजित करें?

  3. मैं रिकॉर्ड प्रकार की थोक एकत्रित तालिका से कैसे चयन करूं?

  4. मैं विभिन्न सर्वरों पर दो अलग-अलग डेटाबेस के बीच Oracle स्कीमा की प्रतिलिपि या आयात कैसे करूं?

  5. Node.js Windows के साथ Oracle डेटाबेस से कनेक्ट करना