By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE TEST ( TITLE VARCHAR2(199 BYTE), AMOUNT NUMBER, VALUE NUMBER )
INSERT INTO TEST ( TITLE, AMOUNT, VALUE ) VALUES ( 'Switch', 3000, 12);
1 rows affected
WITH data (title, amount, value, idx) AS (
SELECT title, amount, value, 1
FROM test
UNION ALL
SELECT title, amount, value, idx + 1
FROM data
WHERE idx < value
) SEARCH DEPTH FIRST BY title SET order_num
SELECT title, amount * idx AS value
FROM data;
TITLE | VALUE |
---|---|
Switch | 3000 |
Switch | 6000 |
Switch | 9000 |
Switch | 12000 |
Switch | 15000 |
Switch | 18000 |
Switch | 21000 |
Switch | 24000 |
Switch | 27000 |
Switch | 30000 |
Switch | 33000 |
Switch | 36000 |
SELECT t.title, t.amount * l.idx AS value
FROM test t
CROSS JOIN LATERAL (
SELECT LEVEL AS idx FROM DUAL CONNECT BY LEVEL <= t.value
) l;
TITLE | VALUE |
---|---|
Switch | 3000 |
Switch | 6000 |
Switch | 9000 |
Switch | 12000 |
Switch | 15000 |
Switch | 18000 |
Switch | 21000 |
Switch | 24000 |
Switch | 27000 |
Switch | 30000 |
Switch | 33000 |
Switch | 36000 |