Oracle-Setup:
CREATE TABLE table_name (col1, col2) AS
SELECT 'ABC', 5 FROM DUAL UNION ALL
SELECT 'DEF', 6 FROM DUAL UNION ALL
SELECT 'GHI', 0 FROM DUAL;
Abfrage - Mit einer Sammlung:
SELECT t.Col1
FROM table_name t,
TABLE(
CAST(
MULTISET(
SELECT 1
FROM DUAL
WHERE t.Col2 > 0
CONNECT BY LEVEL <= t.Col2
)
AS SYS.ODCINUMBERLIST
)
);
Abfrage - Mit Hilfe eines rekursiven Unterabfrage factoring Klausel:
WITH sqfc (COL1, COL2) AS (
SELECT col1, col2 FROM table_name
UNION ALL
SELECT col1, col2 - 1 FROM sqfc WHERE col2 > 1
)
SELECT col1
FROM sqfc
WHERE col2 > 0 -- Needed if col2 is zero
ORDER BY Col1;
Ausgang (aus beiden Abfragen):
COL1
----
ABC
ABC
ABC
ABC
ABC
DEF
DEF
DEF
DEF
DEF
DEF
kann man einfach nicht verwenden SELECT col1, ABC, ABC, ABC, ABC, ABC, def, def, def, def, def'? – Breeze
Ist es richtig, dass Sie 'plsql' nicht verwenden möchten, weil die Abfrage mit mehr als nur Postgresql/Oracle arbeiten soll? –
Welches RDBMS? Bitte markieren Sie entsprechend. (Dies kann mit einigen Variationen einer 'nums' Tabelle gemacht werden, aber auch das variiert systemübergreifend.) –