如何解决使用“ CONNECT BY级”将Oracle SQL转换为PostgreSQL
由于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
。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。