【发布时间】:2019-12-03 10:38:15
【问题描述】:
大家好,我有下表:
+----+--------------+------------+----------+
| Id | Name | Type | ParentId |
+----+--------------+------------+----------+
| 1 | Team A | team | 2 |
| 2 | Initiative A | initiative | 3 |
| 3 | Initiative B | initiative | 4 |
| 4 | Initiative C | initiative | 5 |
| 5 | Product A | product | 6 |
| 6 | Product B | product | NULL |
+----+--------------+------------+----------+
基本上我想做的是递归地自加入相同类型的父级,并且只保留相同类型的最高级别父级。 为了说明我的意思,如果我要对上表执行递归连接,我希望得到以下结果:
+---------+--------+---------------+--------------+------------+-----------+
| Team_Id | Team | Initiative_Id | Initiative | Product_Id | Product |
+---------+--------+---------------+--------------+------------+-----------+
| 1 | Team A | 4 | Initiative C | 6 | Product B |
+---------+--------+---------------+--------------+------------+-----------+
我尝试通过WITH RECURSIVE CTE 进行递归连接,但我不知道如何在最终查询中“汇总”相同类型的父项。
【问题讨论】:
-
最高级别的主动性是B?
-
感谢@EdBangga,进行了相应的编辑。很好的收获。
-
" 尝试通过 WITH RECURSIVE CTE 进行递归连接,但我不知道如何在最终查询中“汇总”相同类型的父项。” 也许也发布尝试过的递归 CTE
标签: sql postgresql crosstab recursive-query self-join