我在数据库中有一个工作计划如下。例如,第一行表示 A 团队在 6 月份有 10 小时的工作要做(SP1006)。
Team Sprint WorkHours A 1006 10 A 1007 20 A 1008 30 A 1009 40 B 1008 50 B 1009 60 B 1010 70
我想将其导出为以下形式来显示:每个月末,根据工作计划,还剩下多少个小时要做。正如您所看到的,派生表的字段也取决于原始数据表。
Team SP1005 SP1006 SP1007 SP1008 SP1009 SP1010 A 100 90 70 40 0 0 B 180 180 180 130 70 0
我正在尝试在 SQL Server 2000 上执行此操作。这对我来说真的很难。有人可以提供一些帮助吗?非常感谢!
编辑:或者你可以忽略行到列的转换部分,(我知道怎么做),只关注累积部分。
最佳答案
对于累积部分use a cursor 。除非结果集非常小(可能要处理 <100 行),否则您可以使用三角形连接。
SELECT t1.Team, t1.Sprint,g.wh-SUM(t2.WorkHours)
FROM tbl t1 JOIN tbl t2 ON t1.Team = t2.Team AND t2.Sprint <= t1.Sprint
JOIN
(SELECT SUM(WorkHours) AS wh, Team FROM tbl GROUP BY Team) g ON t1.Team=g.Team
GROUP BY t1.Team, t1.Sprint,g.wh
但随着行数的增加,三角连接所需的工作量呈指数级增长。
关于sql - 如何编写SQL来级联累加行数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447494/