我現在有包含具有以下減去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)