我目前有一列 TotalHours 包含一个计算列规范,其中包含以下内容
(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0))
这给了我 2 列 regin 和 regout 之间的总小时数。
现在。当计算的小时数超过 6.5 小时时,我试图从总小时数中减去 30 分钟。
我试着用case语句来做。但迷路了。
感谢任何帮助或指示
谢谢。
我目前有一列 TotalHours 包含一个计算列规范,其中包含以下内容
(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0))
这给了我 2 列 regin 和 regout 之间的总小时数。
现在。当计算的小时数超过 6.5 小时时,我试图从总小时数中减去 30 分钟。
我试着用case语句来做。但迷路了。
感谢任何帮助或指示
谢谢。
这是一种方法:
coalesce((datediff(minute,[RegIn],[RegOut])/60.0 -
(case when datediff(minute,[RegIn],[RegOut]) > 6.5*60 then 0.5 else 0 end),
0)
由于您有一个复杂的值表达式,因此您必须多次使用该表达式。一种思考方法是用占位符替换复杂的表达式,例如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