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

मेरे एसक्यूएल परिणामों को डुप्लिकेट कैसे करें?

आप एक सहसंबद्ध पदानुक्रमित क्वेरी का उपयोग कर सकते हैं:

SELECT t.id, r.COLUMN_VALUE, t.cnt
FROM   table_name t
       CROSS JOIN
       TABLE(
         CAST(
           MULTISET(
             SELECT LEVEL
             FROM   DUAL
             CONNECT BY LEVEL <= t.cnt
           )
           AS SYS.ODCINUMBERLIST
         )
       ) r;

या एक पुनरावर्ती उप-क्वेरी फैक्टरिंग क्लॉज:

WITH row_generator ( id, lvl, cnt ) AS (
  SELECT id, 1, cnt
  FROM   table_name
UNION ALL
  SELECT id, lvl + 1, cnt
  FROM   row_generator
  WHERE  lvl < cnt
)
SELECT *
FROM   row_generator
ORDER BY id, lvl

तो परीक्षण डेटा के लिए:

CREATE TABLE table_name ( ID, cnt ) AS
SELECT 'A',  12 FROM DUAL UNION ALL
SELECT 'B', 138 FROM DUAL

ये दोनों समाधान आउटपुट करेंगे:

ID | COLUMN_VALUE | CNT
:- | -----------: | --:
A  |            1 |  12
A  |            2 |  12
A  |            3 |  12
          ...
A  |           10 |  12
A  |           11 |  12
A  |           12 |  12
B  |            1 | 138
B  |            2 | 138
B  |            3 | 138
B  |            4 | 138
          ...
B  |          136 | 138
B  |          137 | 138
B  |          138 | 138

db<>फिडल यहाँ




  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. Oracle में XLSX (एक्सेल) फ़ाइल पढ़ें और आयात करें

  3. कार्य सूची

  4. Oracle PLSQL में किसी भी वर्ष के लिए ईस्टर की तिथियां निर्धारित करना

  5. Oracle में varchar और varchar2 में क्या अंतर है?