【发布时间】:2019-05-22 17:51:29
【问题描述】:
这是一个红移表,所以我无法使用 PSQL 中的 WITH RECURSIVE。
有一个如下所示的表格:
id | current_leg | previous_leg
1 | AA |
2 | AB |
3 | CD |
4 | RF | AB
5 | AW |
6 | FV | AA
7 | ER | RF
我想递归地加入它本身,以基本上计算一个 current_leg 有多少 previous_legs,或 current_leg 的深度。所以对于这个例子,输出看起来像:
id | current_leg |count_legs
1 | AA | 0
2 | AB | 0
3 | CD | 0
4 | RF | 1
5 | AW | 0
6 | FV | 1
7 | ER | 2
关于如何解决这个问题的任何想法都会很棒。已阅读有关递归 CTE 的问题,但不确定如何使其适用于我的用例。
谢谢!
【问题讨论】:
-
第 7 行如何为 RF 获得 2?
-
@doddy 。 . . Redshift 绝对不是 Postgres。例如,这很容易在 Postgres 中使用递归 CTE 解决。而且在 Redshift 中也不容易解决。
-
@mkRabbani 因为 RF 本身有 AB 的 previous_leg。
-
@GordonLinoff 你说得对,我在 redshift 中无法使用 WITH RECURSIVE。我已经更新了这个问题。有什么想法吗?
-
从 2021 年 4 月 29 日开始,Redshift 现在使用 WITH RECURSIVE 语法支持递归 CTE,因此现在可以使用原始方法。 aws.amazon.com/about-aws/whats-new/2021/04/…docs.aws.amazon.com/redshift/latest/dg/…
标签: sql amazon-redshift common-table-expression