【发布时间】:2020-11-06 17:37:04
【问题描述】:
我有以下格式的数据:
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 所用的总时间。
请帮忙。
【问题讨论】:
-
最大 stateid 是 5?或者还有更多?我们需要知道最大数量。你真的想要返回一个诸如“10+20+15+5”之类的字符串吗?或者你想要结果,例如50?
-
我投票结束这个问题,因为输入和输出的陈述不是问题。
-
最大状态 id 可能超过 5,我需要秒的总和而不是字符串。我添加它是为了更好地解释它
-
我一直在研究它并尝试使用自加入来解决这个问题,但意识到这不是要走的路。我知道递归查询可以在这里工作,但我从未使用过它。此外,我已经投入了 1.5 天的时间来提出解决方案,并且由于我的任务是红色的,所以我不能再抽出更多时间了。
-
是否有循环的可能,例如如果从状态
4到状态1是可能的,那么你需要处理1→2→3→4→1→ ...?
标签: sql sql-server tsql common-table-expression