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

Oracle SQL क्रॉस टैब क्वेरी

गतिशील रूप से जेनरेट किए गए परिणामों के लिए आपको कुछ गतिशील पीएलएसक्यूएल समाधान की आवश्यकता होती है, इस प्रक्रिया की तरह कुछ दृश्य v_list_loc :

create or replace procedure p_list_loc is

  v_sql varchar2(32000) := '';

begin

  for c in (select distinct loc from test order by loc) loop
    v_sql := v_sql || '''' ||c.loc|| ''' '||c.loc||',';
  end loop;

  v_sql := 'create or replace view v_list_loc as '
    ||'select * from (select item, loc, stock from test) pivot (sum(stock) '
    ||'for (loc) in ('||rtrim(v_sql, ',')||'))';

  execute immediate v_sql;

end p_list_loc;

प्रक्रिया कोड में test replace को बदलें अपने टेबल नाम के साथ। इस प्रक्रिया को संकलित करें, चलाएं और उत्पन्न दृश्य से परिणाम चुनें v_list_loc :

SQL> exec p_list_loc;

PL/SQL procedure successfully completed

SQL> select * from v_list_loc;

ITEM         KS5        KS6
----- ---------- ----------
0001          10         30
0002          10         20

हर बार जब कॉलम में नए मान loc ऐसा प्रतीत होता है कि दृश्य से चयन करने से पहले आपको प्रक्रिया निष्पादित करने की आवश्यकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. R12.2 अपग्रेड पार्ट -2 (R12.2.0 के लिए मुख्य अपग्रेड ड्राइवर) में चरण दर चरण अपग्रेड प्रक्रिया

  2. वृत्ताकार विदेशी कुंजियों वाली दो तालिकाओं से हटाएं

  3. Oracle - Oracle लेन-देन विशिष्ट DML कथनों का प्रबंधन कैसे करता है

  4. SQL दिनांकों में पारित 2 के बीच कार्य दिवसों की संख्या वापस करने के लिए

  5. कनेक्ट-बाय क्वेरी में पूर्ण श्रृंखला गुणन (उत्पाद) नहीं मिल रहा है