2

現在、次の計算列の仕様を含む列 TotalHours があります。

(isnull(datediff(minute,[RegIn],[RegOut]),(0))/(60.0))

これにより、2 つの列の regin と regout の間の合計時間がわかります。

今。計算された時間が 6.5 時間を超える場合、合計時間から 30 分を差し引こうとしています。

case文でやってみました。しかし迷子になった。

ヘルプやポインタに感謝します

ありがとう。

4

2 に答える 2

2

1 つの方法を次に示します。

coalesce((datediff(minute,[RegIn],[RegOut])/60.0 -
          (case when datediff(minute,[RegIn],[RegOut]) > 6.5*60 then 0.5 else 0 end),
         0)
于 2013-01-07T14:39:20.517 に答える
2

値の複雑な式があるため、その式を複数回使用する必要があります。考え抜く方法の 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
于 2013-01-07T14:41:04.430 に答える