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

तालिका (ओरेकल एसक्यूएल) में स्ट्रिंग (एक कॉलम) के रूप में एकाधिक पंक्तियों को वापस करने वाली सबक्वायरी का चयन करें

SQL Fiddle

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

CREATE TABLE Product ( Product_No, Column1, Column2 ) AS
SELECT 1, 'A', 10 FROM DUAL UNION ALL
SELECT 2, 'B', 11 FROM DUAL UNION ALL
SELECT 3, 'C', 12 FROM DUAL
/
CREATE TABLE Inventory ( Product_No, Inventory_No, ColumnA, ColumnB, ColumnC ) AS
SELECT 1, 1, 'ABC',  20,  30 FROM DUAL UNION ALL
SELECT 1, 2, 'DDD',  30,  50 FROM DUAL UNION ALL
SELECT 2, 1, 'EFG',  60,  70 FROM DUAL UNION ALL
SELECT 2, 2, 'CDE',  99, 100 FROM DUAL UNION ALL
SELECT 3, 3, 'EFF', 120,  30 FROM DUAL
/

क्वेरी 1 :

SELECT p.*, i.ColumnX
FROM   Product p
       LEFT OUTER JOIN
       ( SELECT Product_no,
                LISTAGG(
                  ColumnA || '-' || ColumnB || '-' || ColumnC,
                  ','
                ) WITHIN GROUP ( ORDER BY Inventory_no )
                AS ColumnX
         FROM   Inventory
         GROUP BY Product_No
       ) i
       ON ( p.product_no = i.product_no )

परिणाम :

| PRODUCT_NO | COLUMN1 | COLUMN2 |              COLUMNX |
|------------|---------|---------|----------------------|
|          1 |       A |      10 |  ABC-20-30,DDD-30-50 |
|          2 |       B |      11 | EFG-60-70,CDE-99-100 |
|          3 |       C |      12 |           EFF-120-30 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डीप नेस्टेड सबक्वेरी फैक्टरिंग (CTE) के लिए धीमा प्रदर्शन

  2. पीएल/एसक्यूएल अपवाद हैंडलिंग:कुछ भी न करें (अपवाद को अनदेखा करें)

  3. मैं कैसे पता लगा सकता हूं कि ओरेकल में संग्रहीत प्रक्रिया को अंतिम बार कब संशोधित या संकलित किया गया था?

  4. ओरेकल में बड़ी मात्रा में डेटा के साथ एक ही तालिका में फ़ील्ड तुलना करने का सबसे तेज़ तरीका

  5. अल्पविराम से अलग किए गए मानों को ऑरैकल में पंक्तियों में कैसे परिवर्तित करें?