【发布时间】:2018-01-14 22:51:45
【问题描述】:
difference 列计算 ContractedHours 和 Hours_delivered_in_period
之间的差异在上面的示例中,他们在第 2 期工作“-4”小时,在第 10 期加班“+1”小时。
这应该给出总的-3。然后在第 11 阶段,他们加班了“9.5”小时,但这应该会使他们恢复到积极的“+6.5”
一旦他们回到正小时数,那么它应该重置回 0,因为他们不应该累积正小时数,因为他们每个月都有报酬,因此他们不应该被“保留”,所以他们总是重置回 0。
然后它们可能在第 12 期有负差异,并且从第 11 期计算得出的正小时数不应计入总数,因此一旦小时数为正数,小时数应回到 0
如何在 SQL Server 2008 中计算此运行“负数”总数以跟踪不足时间?
编辑 - 更新
这是我想在 SQL 中完成的示例列,我已经在 excel 中完成了,我想知道如何在 SQL 中执行名为“他们是否超时”的列
Excel 公式是“=IF(OR(H2
我的 SQL 尝试如下,但是它没有添加差异,它保持在“-4”并且不添加下一个值。
SELECT T1.* ,
T2.RunningSum
FROM Staff_Tracked_Hours As T1
CROSS APPLY ( SELECT sum(differencefromzero) AS RunningSum
FROM dbo.Staff_Tracked_Hours AS CAT1
WHERE ( CAT1.Id <= T1.Id and CAT1.personID ='000033485' )
) AS T2
where t1.personID ='000033485'
【问题讨论】:
-
您需要一个 sql AFTER 触发器来更新相关列。
-
只保留几列(查询中使用的列),生成 INSERT 语句并提供预期结果
-
请将预期结果和实际结果发布为文本(不是图片)。如果有的话,也请尝试分享您的查询尝试
-
更新了更多细节
标签: c# sql sql-server sql-server-2008 cumulative-sum