这是用于redshift表的,所以我无法使用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的问题,但不确定如何使它适用于我的用例。
谢谢!
答案 0 :(得分:0)
以下脚本可为您的当前样本数据提供预期结果。您需要检查此脚本是否适用于具有更多方案的更多数据-
SELECT A.id,A.current_leg,
CASE
WHEN A.previous_leg IS NULL THEN 0
ELSE
(
SELECT
CASE
WHEN B.current_leg IS NULL THEN 0
ELSE 1
END
+
CASE
WHEN B.previous_leg IS NULL THEN 0
ELSE 1
END
FROM your_table B
WHERE B.id <= A.id
AND B.current_leg = A.previous_leg
)
END Coun_legs
FROM your_table A