Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

làm thế nào để nhân bản kết quả sql của tôi?

Bạn có thể sử dụng truy vấn phân cấp tương quan:

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;

hoặc mệnh đề bao thanh toán truy vấn phụ đệ quy:

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

Vì vậy, đối với dữ liệu thử nghiệm:

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

Cả hai giải pháp này sẽ tạo ra:

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 <> fiddle here




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn có thể sử dụng Microsoft Entity Framework với Oracle không?

  2. ORA-00054:tài nguyên bận và có được với NOWAIT được chỉ định hoặc hết thời gian chờ

  3. Nhập tệp trong Oracle Apex bằng wwv_flow_files

  4. Oracle’s Containers cho J2EE (OC4J) trong R12

  5. cx_Oracle:Làm cách nào để nhận từng hàng dưới dạng từ điển?