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

Oracle में पंक्तियों को गतिशील रूप से स्तंभों में पिवट करना

Oracle 11g एक PIVOT प्रदान करता है ऑपरेशन जो वही करता है जो आप चाहते हैं।

Oracle 11g समाधान

select * from
(select id, k, v from _kv) 
pivot(max(v) for k in ('name', 'age', 'gender', 'status')

(नोट:मेरे पास इसका परीक्षण करने के लिए 11g की एक प्रति नहीं है इसलिए मैंने इसकी कार्यक्षमता को सत्यापित नहीं किया है)

मैंने यह समाधान यहां से प्राप्त किया:http://orafaq.com/wiki/PIVOT

संपादित करें -- पिवट xml विकल्प (Oracle 11g भी)
जाहिरा तौर पर एक pivot xml भी है जब आप उन सभी संभावित कॉलम शीर्षकों को नहीं जानते हैं जिनकी आपको आवश्यकता हो सकती है। (XML प्रकार देखें) http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html)

पर स्थित पृष्ठ के निचले भाग के निकट अनुभाग
select * from
(select id, k, v from _kv) 
pivot xml (max(v)
for k in (any) )

(नोट:पहले की तरह मेरे पास इसका परीक्षण करने के लिए 11g की एक प्रति नहीं है इसलिए मैंने इसकी कार्यक्षमता को सत्यापित नहीं किया है)

संपादित करें2: परिवर्तित v pivot . में और pivot xml max(v) . के लिए कथन चूंकि इसे टिप्पणियों में से एक में उल्लिखित के रूप में एकत्रित किया जाना चाहिए। मैंने in भी जोड़ा है क्लॉज जो pivot . के लिए वैकल्पिक नहीं है . बेशक, in . में मान निर्दिष्ट करना होगा खंड पूरी तरह से गतिशील पिवट/क्रॉसस्टैब क्वेरी रखने के लक्ष्य को हरा देता है जैसा कि इस प्रश्न के पोस्टर की इच्छा थी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL - कस्टम SQLERRM के साथ उपयोगकर्ता-परिभाषित अपवाद उठाएँ

  2. NUMBER कॉलम के लिए IN क्लॉज के अंदर अल्पविराम से अलग किए गए मानों का उपयोग करना

  3. Oracle JDeveloper में जावा एप्लिकेशन बनाना, भाग 2

  4. Oracle LiveSQL के साथ शुरुआत करना

  5. Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने का अंतर