使用 "CONNECT BY level" 将 oracle Sql 转换为 postgresql

Convert oracle Sql to postgresql with "CONNECT BY level"

因为 PostgreSQL 不支持“CONNECT BY level”关键字,我无法将以下 sql 翻译成 PostgreSQL

请告知如何在 PostgreSQL 上重写以下 oracle SQL :

SELECT
    TO_DATE('01/01/2019','MM/DD/YYYY') + level - 1 AS days,
    level AS level1
FROM
    dual
CONNECT BY
    level <= (
        SELECT
            abs(TO_DATE('01/01/2021','MM/DD/YYYY') - TO_DATE('01/10/2021','MM/DD/YYYY') )
        FROM
            dual
        WHERE
            'Daily' = 'Daily'
    )

结果:

01-JAN-19   1
02-JAN-19   2
03-JAN-19   3
04-JAN-19   4
05-JAN-19   5
06-JAN-19   6
07-JAN-19   7
08-JAN-19   8
09-JAN-19   9

谢谢

Postgres 有一个方便的函数,叫做 generate_series(),它使这类任务变得简单:

select dt::date, rn
from generate_series('2019-01-01'::date, '2019-01-09'::date, '1 day') 
    with ordinality as d(dt, rn)

我看不出 Oracle 查询的 connect by 子句中混淆逻辑的意义;标量子查询总是计算为 9.

Demo on DB Fiddlde:

dt         | rn
:--------- | -:
2019-01-01 |  1
2019-01-02 |  2
2019-01-03 |  3
2019-01-04 |  4
2019-01-05 |  5
2019-01-06 |  6
2019-01-07 |  7
2019-01-08 |  8
2019-01-09 |  9