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

ऑरेकल में अनपिवट ऑन व्यू काम नहीं कर रहा है

जैसा कि अलेक्सेज ने पहले ही कहा है - यह Oracle सर्वर संस्करण <11g पर काम नहीं करेगा।

तो यहाँ एक पुराना और थोड़ा "बुरा" तरीका है...

select key, c1, c2, c3 from t order by key ;

KEY C1    C2    C3
--- ----- ----- -----
r1  v1    v2    v3
r2  v1    v2
r3  v1          v3
r4  v1
r5        v2    v3
r6        v2
r7              v3
r8

हम C1, C2, और C3 मानों की प्रत्येक पंक्ति को एक कॉलम के अंतर्गत मानों की तीन पंक्तियों में निम्नानुसार परिवर्तित कर सकते हैं।

break on key skip 1 duplicates
select key, 'C1' as source, c1 as val from t union all
select key, 'C2' as source, c2 as val from t union all
select key, 'C3' as source, c3 as val from t
order by key, source ;

KEY SOURCE VAL
--- ------ -----
r1  C1     v1
r1  C2     v2
r1  C3     v3
r2  C1     v1
r2  C2     v2
r2  C3
r3  C1     v1
r3  C2
r3  C3     v3
r4  C1     v1
r4  C2
r4  C3
r5  C1
r5  C2     v2
r5  C3     v3
r6  C1
r6  C2     v2
r6  C3
r7  C1
r7  C2
r7  C3     v3
r8  C1
r8  C2
r8  C3

यदि हमें C1, C2, या C3 से NULL मान वाली पंक्तियों की आवश्यकता नहीं है, तो हम उन्हें फ़िल्टर करने के लिए WHERE क्लॉज़ का उपयोग कर सकते हैं।

select key, 'C1' as source, c1 as val from t where c1 is not null union all
select key, 'C2' as source, c2 as val from t where c2 is not null union all
select key, 'C3' as source, c3 as val from t where c3 is not null
order by key, source ;

KEY SOURCE VAL
--- ------ -----
r1  C1     v1
r1  C2     v2
r1  C3     v3
r2  C1     v1
r2  C2     v2
r3  C1     v1
r3  C3     v3
r4  C1     v1
r5  C2     v2
r5  C3     v3
r6  C2     v2
r7  C3     v3

(c) http://oracle-knowledgeshare.blogspot. डी




  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 पदानुक्रमित क्वेरी

  3. JDBC में संग्रहीत कार्यविधि को कैसे कॉल करें

  4. ORA-01438:निर्दिष्ट परिशुद्धता से बड़ा मान इस कॉलम के लिए अनुमति देता है - मैं यह कैसे प्राप्त करूं कि यह किस कॉलम का जिक्र कर रहा है?

  5. क्या 'US7ASCII' के रूप में कॉन्फ़िगर किए गए Oracle डेटाबेस में यूनिकोड टेक्स्ट को स्टोर करने का कोई तरीका है