我现在有包含具有以下减去30分钟
(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0))
计算列规范这使我2个栏REGIN,和REGOUT之间的总小时数的列TotalHours。
现在。我试图从计算小时数高于6.5小时的总小时数中减去30分钟。
我试着用case语句来做。但迷路了。
感谢任何帮助或指点
谢谢。
我现在有包含具有以下减去30分钟
(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0))
计算列规范这使我2个栏REGIN,和REGOUT之间的总小时数的列TotalHours。
现在。我试图从计算小时数高于6.5小时的总小时数中减去30分钟。
我试着用case语句来做。但迷路了。
感谢任何帮助或指点
谢谢。
既然你已经有了一个值一个复杂的表达式,你必须多次使用该表达式。其中一种方法是用占位符替换复杂的表达式,如TotalHours
,然后在找出逻辑后再将表达式置回。
TotalHours -
Case When TotalHours > 6.5 Then 0.5 Else 0 End
这就是说,当总小时数大于6.5小时时,总小时数应该减少0.5(30分钟)。按照上面的方式写下来会减少TotalHours的回复。现在插回原来的复杂表情:
(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0)) -
Case When (isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0)) > 6.5
Then 0.5 Else 0 End
这里有一种方法:
coalesce((datediff(minute,[RegIn],[RegOut])/60.0 -
(case when datediff(minute,[RegIn],[RegOut]) > 6.5*60 then 0.5 else 0 end),
0)