現在、次の計算列の仕様を含む列 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文でやってみました。しかし迷子になった。
ヘルプやポインタに感謝します
ありがとう。
1 つの方法を次に示します。
coalesce((datediff(minute,[RegIn],[RegOut])/60.0 -
(case when datediff(minute,[RegIn],[RegOut]) > 6.5*60 then 0.5 else 0 end),
0)
値の複雑な式があるため、その式を複数回使用する必要があります。考え抜く方法の 1 つは、複雑な式を のようなプレースホルダーに置き換え、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