【发布时间】:2021-12-11 14:14:02
【问题描述】:
我的表格中的数据如下所示:
| ID | previous_id | value |
|---|---|---|
| 01 | NULL | |
| 02 | 01 | |
| 03 | 02 | |
| 04 | 03 | |
| .. | .. |
我想根据前一个 ID 等于该行 ID 的行的值来设置该行的值。例如,如果 ID = 04 的行的值为 1,我希望之前 ID = 04 的行也具有值 1,这反过来会导致之前 ID = 03 的行具有值 1 等等。
我没有固定的连接行数,ID 是 GUID。
有没有办法在不使用临时表的情况下执行这样的功能,它会检查先前 ID 等于行 ID 的行的值,然后根据同一列中的行值分配一个值.
我想象的递归逻辑的伪 SQL: 不存在的情况(前一个 ID 等于 ID 的行)然后 randomColumn else 前一个 id 行的值作为值结束
【问题讨论】:
-
这听起来像
LAG分析函数可能是你所追求的,或者可能是FIRST_VALUE或LAST_VALUE取决于。请编辑您的问题以包含实际数据以及预期输出。比如你说的1的值是从哪里来的? -
PL/SQL 是编程语言。查询是 SQL。更新了问题和标签。