我是 Oracle 的新手。我想将此 Oracle 查询转换为 PostgreSQL。但我不明白“start_date + level-1”是什么意思。什么是'v'?这些术语:LEVEL、CONNECT BY 对我来说是新的。我查看了一些示例以了解 WITH、CONNECT BY、LEVEL 通常的含义。但是我仍然不知道如何将其转换为 postgreSql。
WITH t AS
(
SELECT start_date + level-1 As date1
FROM
(
SELECT created_at date1, last_date As date2 FROM dual
) v
CONNECT BY date1 + level-1 <= date2
)
SELECT ( ..... )
我的 PostgreDB 中有 tablefunc 扩展。在几篇文章中了解这一点。有人可以简要解释一下这里发生了什么,并帮助我将其转换为 postgreSql 吗?另外,如果您能提供任何能清楚解释这些术语的链接,那将对我大有裨益。
谢谢。
最佳答案
使用generate_series()
:
select date1
from generate_series(created_at, last_date, interval '1 day') gs(date1)
您的查询没有定义列的来源,但这通常可以用作:
select t.*, gs.date1
from t cross join lateral
generate_series(t.created_at, t.last_date, interval '1 day') gs(date1)
关于sql - 将复杂的 Oracle 查询转换为 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51615894/