【发布时间】:2015-07-17 14:27:39
【问题描述】:
我有一个查询是用 Oracle 编写的更大查询的一部分,我需要将其转换为 PostgreSQL。
/*rn and cnt are defined earlier*/
SELECT wtn, LTRIM(SYS_CONNECT_BY_PATH(RESP_TCSI, ','),',') TCSI_CODES
FROM DATA
WHERE rn = cnt
START WITH rn = 1
CONNECT BY PRIOR rn = rn-1
AND PRIOR WTN = WTN
据我所知,Postgres 中没有与 SYS_CONNECT_BY_PATH() 等效的东西。我知道 Postgres 在 tablefunc 中有一个 CONNECTBY() 函数,但我认为它不会像 start with 和 connect by bits 那样做。我也知道 Postgres 相当于 LTRIM() 是什么,但如果我必须使用 CONNECTBY() 或类似的东西,我不确定修剪字符串是否重要。
阅读和搜索我注意到可能有一种方法可以通过一些递归选择来做到这一点,但我不确定我会如何做到这一点,除此之外,我真的不明白代码在做什么。我的假设是它与基于 Oracle 等效项的分层树有关,但即便如此我也不确定。我将如何在 Postgres 中做与此相同或类似的事情?
谢谢。
【问题讨论】:
标签: oracle postgresql