sql - 使用 SUM 进行递归连接
问题描述
我有以下格式的数据:
FromStateID ToStateID Seconds
1 2 10
2 3 20
3 4 15
4 5 5
我需要以下输出
FromStateID ToStateID Seconds
1 2 10
2 3 20
3 4 15
4 5 5
1 3 10+20
1 4 10+20+15
1 5 10+20+15+5
2 4 20+15
2 5 20+15+5
3 5 15+5
此输出按时间顺序显示每个组合花费FromStateId
的总时间。ToStateId
请帮忙。
解决方案
我认为这是一个遵循链接的递归 CTE:
with cte as (
select FromStateID, ToStateID, Seconds
from t
union all
select cte.FromStateId, t.ToStateId, cte.Seconds + t.Seconds
from cte join
t
on cte.toStateId = t.FromStateId
)
select *
from cte;
这是一个 db<>fiddle。
推荐阅读
- c++ - 一个非常简单的win32 socket代码,但是工作错误
- linux - 查找 shell 变量是否包含特定字符串并对其进行注释
- python - OR-Tools - 使用 CP-SAT 通过最小化进行分类
- java - 我不是java编码的初学者,但我需要一些帮助来理解java中的构造函数
- javascript - 在博览会构建期间写入 ECONNRESET 错误:android
- qgis - 对某些多边形特征使用不同的“分割特征”?
- jenkins - 无法直接从 jenkins url 下载工件文件
- javascript - CKEditor5 CodeBlock 的示例用法
- javascript - 情感风格组件中的媒体查询
- firebase - 没有为类查询定义方法“get”