差异列计算 ContractedHours 与 Hours_delivered_in_period
之间的差异在上面的例子中,他们工作了#34; -4"第2期的小时数和" + 1"加时赛10小时加班。
这应该总共-3。然后在第11期,他们工作了" 9.5"加班时间,但这应该使他们恢复正面" + 6.5"
一旦他们整体回到正面时间,那么它应该重新设置为0,因为他们不应该累积积极的工作时间,因为他们每月支付,所以他们不应该保持",所以他们总是重置为0.
然后他们可能在第12期有负差异,而11期计算的积极时间不应计入总数,因此小时数应为正数时小时应该回到0
如何计算此运行"否定" SQL Server 2008中的总数来跟踪时间吗?
编辑 - 更新
这是我想在SQL中用excel完成的示例列,我想知道如何在SQL中执行这个名为&#34的列;他们是Undertime"
Excel论坛是&#34; = IF(OR(H2 <0,H3&lt; 0),H2 + I3)&#34;
我的SQL尝试在下面,但它没有添加差异,它保持在&#34; -4&#34;并且不会添加下一个值。
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'
答案 0 :(得分:0)
如果我理解正确的问题,那么您要求@media only screen
and (min-device-width : 320px)
and (max-device-width : 568px)
and (orientation : landscape) {
html {
-webkit-text-size-adjust: none; /* none for no scaling */
}
}
列的总和为负数。在这种情况下,此查询应该可以解决问题:
difference
答案 1 :(得分:0)
使用窗口功能:
with CTE as
(
select id, personid, year, period,
sum(differencefromzero) over (partition by personid order by year, period) as cumu_total
from MyTable
)
select id, personid, year, period,
case when cumu_total < 0 then cumu_total else 0 end as new_difference
from CTE
注意......这假设差异从零开始变为正数和负数。
答案 2 :(得分:-1)
您可以使用AFTER或INSTEAD OF触发器,如下面的链接所示。