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

ऑरैकल डेटाबेस में क्वेरी के परिणाम में कॉलम को कैसे विभाजित करें?

एक PIVOT का प्रयोग करें और ROW_NUMBER विश्लेषणात्मक कार्य:

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

CREATE TABLE your_query_result (sal, cat, id, shop ) AS
SELECT 1900,   '34R5',   10,   'dense' FROM DUAL UNION ALL
SELECT 1900,   '34r5',   10,   'SVM' FROM DUAL UNION ALL
SELECT 1900,   '34r5',   10,   'bpo' FROM DUAL UNION ALL
SELECT 2345,   '3ER4',   11,   'kpo' FROM DUAL UNION ALL
SELECT 2345,   '3ER4',   11,   'infra' FROM DUAL UNION ALL
SELECT 12345,  '34F4',   12,   'const' FROM DUAL;

क्वेरी 1 :

SELECT sal,
       cat,
       id,
       "1_SHOP" AS shop_1,
       "2_SHOP" AS shop_2,
       "3_SHOP" AS shop_3
FROM   (
  SELECT r.*,
         ROW_NUMBER() OVER (
           PARTITION BY sal, cat, id
           ORDER BY shop
         ) AS rn
  FROM   (
    SELECT * FROM your_query_result
  ) r
)
PIVOT (
  MAX( shop ) AS shop
  FOR rn IN ( 1, 2, 3 )
)

परिणाम :

|   SAL |  CAT | ID | SHOP_1 | SHOP_2 | SHOP_3 |
|-------|------|----|--------|--------|--------|
|  1900 | 34R5 | 10 |  dense | (null) | (null) |
|  1900 | 34r5 | 10 |    SVM |    bpo | (null) |
|  2345 | 3ER4 | 11 |  infra |    kpo | (null) |
| 12345 | 34F4 | 12 |  const | (null) | (null) |

यदि आप पहली और दूसरी पंक्तियाँ एक ही पंक्ति में चाहते हैं तो बस CAT . बदलें ROW_NUMBER . जनरेट करने से पहले कॉलम लोअर-केस में होना चाहिए और PIVOT आईएनजी।




  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 11g SQL बहु-स्तंभ क्वेरी के एक कॉलम में अद्वितीय मान प्राप्त करने के लिए

  3. एक स्ट्रिंग कैसे सम्मिलित करें जिसमें एक &शामिल है

  4. oracle sql में व्यावसायिक दिन जोड़ना

  5. ओरेकल में बल्क इंसर्ट के साथ टेक्स्ट फाइल डालें