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

गैर-कार्डिनल मानों वाली पिवट तालिका

एक समाधान जिसके लिए एकाधिक सेल्फ़-जॉइन की आवश्यकता नहीं होती है:

आप PIVOT कर सकते हैं ROW_NUMBER() . के परिणाम पर अपना वांछित आउटपुट प्राप्त करने के लिए विश्लेषणात्मक कार्य:

SELECT *
FROM   (
  SELECT t.*,
         ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
  FROM   your_table t
)
PIVOT ( MAX( Reader ) AS reader, MAX( result ) AS result FOR rn IN ( 1, 2, 3 ) );

आउटपुट :

TEST 1_READER 1_RESULT 2_READER 2_RESULT 3_READER 3_RESULT
---- -------- -------- -------- -------- -------- --------
   1 John          1.6 Jack          5.2
   2 Ursula        2.5 Jack          5.1
   3 Albert        3.0

या, केवल एकत्रीकरण कार्यों का उपयोग करना:

SELECT test,
       MAX( CASE rn WHEN 1 THEN reader END ) AS reader_1,
       MAX( CASE rn WHEN 1 THEN result END ) AS result_1,
       MAX( CASE rn WHEN 2 THEN reader END ) AS reader_2,
       MAX( CASE rn WHEN 2 THEN result END ) AS result_2,
       MAX( CASE rn WHEN 3 THEN reader END ) AS reader_3,
       MAX( CASE rn WHEN 3 THEN result END ) AS result_3
FROM   (
  SELECT t.*,
         ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
  FROM   your_table t
)
GROUP BY test;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY NULL के साथ LISTAGG वास्तव में ऑर्डर मानदंड के रूप में क्या उपयोग करता है?

  2. Oracle SQL GROUP BY GROUP BY अभिव्यक्ति सहायता नहीं

  3. वर्तमान दृश्य क्या है APPL_TOP स्नैपशॉट

  4. Oracle SQL:किसी तालिका को किसी अन्य तालिका के डेटा से अपडेट करें

  5. ORA-02014 को कैसे हल करें:DISTINCT, GROUP BY के साथ दृश्य से अद्यतन के लिए चयन नहीं कर सकता