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

कॉलम को पंक्ति ऑरैकल में स्थानांतरित करें

शुद्ध एसक्यूएल . में , इसके लिए बहुत अधिक कोडिंग की आवश्यकता होगी क्योंकि आपको श्रेणी . को मैन्युअल रूप से डालना होगा क्योंकि मानों और परास के बीच कोई संबंध ही नहीं है। यदि कोई संबंध होता, तो आप CASE . का उपयोग कर सकते थे अभिव्यक्ति और श्रेणी का निर्माण गतिशील रूप से

SQL> WITH DATA AS
  2    (SELECT 50 "1-99transval",
  3      90 "100-200transval",
  4      80 "200-300transval",
  5      67 "1-99nontransval",
  6      58 "100-200nontransval",
  7      88 "200-300nontransval"
  8    FROM dual
  9    )
 10  SELECT '1-99' range,
 11    "1-99transval" transval,
 12    "1-99nontransval" nontransval
 13  FROM DATA
 14  UNION
 15  SELECT '100-200' range,
 16    "100-200transval",
 17    "100-200nontransval" nontransval
 18  FROM DATA
 19  UNION
 20  SELECT '200-300' range,
 21    "200-300transval",
 22    "200-300nontransval" nontransval
 23  FROM DATA;

RANGE     TRANSVAL NONTRANSVAL
------- ---------- -----------
1-99            50          67
100-200         90          58
200-300         80          88

Oracle डेटाबेस 11g रिलीज़ 1 . से और ऊपर, आप UNPIVOT . का उपयोग कर सकते हैं

SQL> WITH DATA AS
  2    (SELECT 50 "1-99transval",
  3      90 "100-200transval",
  4      80 "200-300transval",
  5      67 "1-99nontransval",
  6      58 "100-200nontransval",
  7      88 "200-300nontransval"
  8    FROM dual
  9    )
 10  SELECT *
 11  FROM   DATA
 12  UNPIVOT( (transval,nontransval)
 13  FOR RANGE IN ( ("1-99transval","1-99nontransval") AS '1-99'
 14                ,("100-200transval","100-200nontransval") AS '100-200'
 15                ,("200-300transval","200-300nontransval") AS '200-300'));

RANGE     TRANSVAL NONTRANSVAL
------- ---------- -----------
1-99            50          67
100-200         90          58
200-300         80          88

ऊपर, आपके मामले में आपको साथ . को बदलने की आवश्यकता है अपनी मौजूदा क्वेरी के साथ एक उप-क्वेरी . के रूप में क्लॉज करें . आपको UNION . में अन्य कॉलम शामिल करने होंगे ।

PL/SQL में , आप (ab) तत्काल निष्पादित . का उपयोग कर सकते हैं और कॉलम नाम . निकाल कर "श्रेणी" प्राप्त करें डायनामिक sql . में ।

हालांकि, अपनी मौजूदा क्वेरी को संशोधित/पुनः लिखना बेहतर होगा जिसे आपने अभी तक नहीं दिखाया है।



  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 में किसी अनुक्रमणिका और तालिका स्वामी के बारे में जानकारी कैसे प्राप्त करूं?

  2. कीवर्ड से नहीं मिला जहां अपेक्षित था (ओरेकल एसक्यूएल)

  3. ड्रॉप टेबलस्पेस यदि मौजूद नहीं है

  4. सी # (एसक्यूएल इंजेक्शन अटैक) में गतिशील क्वेरी बनाना

  5. Oracle 11g:स्थिर मान के लिए डिफ़ॉल्ट जब क्वेरी कुछ भी नहीं लौटाती है