在 Oracle 中生成具有增量值的重复行

Generate duplicate rows with incremental values in Oracle

我在 Oracle SQL 中有一个要求,即特定值应重复 5 次。所以,我编写了以下查询并得到了预期的结果。

SELECT Item_Name || RANGES AS Item_Number
FROM
(
SELECT DISTINCT 'Price Line ' || column1 || '-' AS Item_Name, level+0 RANGES
FROM
(
SELECT DISTINCT column1 from tbl where column1 in 
(
'ABC',
'BCD'
) 
) connect by level <= 5
) order by Item_Number

OUTPUT:    
Price Line ABC-1
Price Line ABC-2
Price Line ABC-3
Price Line ABC-4
Price Line ABC-5

Price Line BCD-1
Price Line BCD-2
Price Line BCD-3
Price Line BCD-4
Price Line BCD-5

但是当我添加超过 10 个值时,如 'DEF'、'EFG'、.....'XYZ',查询会持续执行数小时而没有任何结果。

如有任何帮助或建议,我们将不胜感激。

此致,

确保 CONNECT BY 未在您的 table 行上运行。例如,使用常见的 table 表达式(即 WITH 子句)使用 CONNECT BY 创建一个包含 5 行的行源,然后 CROSS JOIN 该行源到您的 table。这是一个例子。

CREATE TABLE ITEMS ( item_number VARCHAR2(30) );

INSERT INTO ITEMS VALUES ('ABC');
INSERT INTO ITEMS VALUES ('BCD');
INSERT INTO ITEMS VALUES ('CDE');
INSERT INTO ITEMS VALUES ('DEF');
INSERT INTO ITEMS VALUES ('EFG');
INSERT INTO ITEMS VALUES ('FGH');
INSERT INTO ITEMS VALUES ('GHI');
INSERT INTO ITEMS VALUES ('HIJ');
INSERT INTO ITEMS VALUES ('IJK');
INSERT INTO ITEMS VALUES ('JKL');

COMMIT;

WITH rowgen AS ( 
  SELECT rownum rn FROM dual CONNECT BY rownum <= 5 )
SELECT item_number || '-' || rn
FROM   items
CROSS JOIN rowgen
ORDER BY item_number, rn;
+----------------------+
| ITEM_NUMBER||'-'||RN |
+----------------------+
| ABC-1                |
| ABC-2                |
| ABC-3                |
| ABC-4                |
| ABC-5                |
| BCD-1                |
| BCD-2                |
| BCD-3                |
| BCD-4                |
| BCD-5                |
| CDE-1                |
| CDE-2                |
| CDE-3                |
| CDE-4                |
| CDE-5                |
| ...                  |
+----------------------+