在前一系列行/RECURSIVE/CONNECTED BY上向后计算列值



需要您的帮助。我想/希望有这样的功能。我发现";CONNECT DBY";以及";使用递归AS"但这似乎并不能解决我的问题。

给定表格:

表A

+------+------------+----------+
| id   |   prev_id  |  date    |
+------------------------------+
| 1    |            | 20200101 |
| 23   |     1      | 20200104 |
| 34   |     23     | 20200112 |
| 41   |     34     | 20200130 |
+------------------------------+

表B

+------+-----------+
| ref_id  |  key   |
+------------------+
|    41   |  abc   |
+------------------+

(总是指向表"A"中的最新条目。更新,无历史记录(

加入声明:

选择id,prev_id,密钥,日期来自B.ref_id=A.id 上的左外JOIN B

GIVEN psql结果集:

+------+------------+----------+-----------+
| id   |   prev_id  |    key   |   date    |
+------------------------------+-----------+
| 1    |            |          | 20200101  |
| 23   |     1      |          | 20200104  |
| 34   |     23     |          | 20200112  |
| 41   |     34     |   abc    | 20200130  |
+------------------------------+-----------+

期望输出:

+------+------------+----------+-----------+
| id   |   prev_id  |    key   |   date    |
+------------------------------+-----------+
| 1    |            |   abc    | 20200101  |
| 23   |     1      |   abc    | 20200104  |
| 34   |     23     |   abc    | 20200112  |
| 41   |     34     |   abc    | 20200130  |
+------------------------------+-----------+

结果集的行由列"id"one_answers"prev_id"连接。我想计算";键";列。请记住,这是一个非常简单的例子。通常有更多的行和不同的密钥以及id的

我知道您希望在tableb中引入每一行的层次结构。这里有一种使用递归查询的方法:

with recursive cte as (
select a.id, a.prev_id, a.date, b.key
from tablea a
inner join tableb b on b.ref_id = a.id
union all
select a.id, a.prev_id, a.date, c.key
from cte c
inner join tablea a on a.id = c.prev_id
)
select * from cte

相关内容

  • 没有找到相关文章

最新更新