2

特定の値を超えないように、特定のフィールドに上限を設定しようとしています。

たとえば、次のようなもので十分です。フィールドが8を超えないように指定できます。

SELECT (
        cap(t.MondayHrs,8) 
        + cap(t.TuesdayHrs,8)
        + cap(t.WednesdayHrs,8)
        + cap(t.ThursdayHrs,8)
        + cap(t.FridayHrs,8)
       ) as TotalHours

MondayHrs = 7の場合、TotalHoursに7として追加する必要があります。MondayHrs= 10の場合、TotalHoursに8(上限値)として追加する必要があります。

これを容易にするT-SQLに組み込まれているものはありますか?

4

4 に答える 4

6
create function Cap (@Value float,@maxValue float) Returns float 
as
begin
Declare @Result float
if @Value > @maxValue select @Result=@Maxvalue else select @Result=@Value
Return @Result
end;

利用方法

Select dbo.Cap(1,10),dbo.Cap(11,10)
于 2012-11-14T23:49:12.633 に答える
4

試す...

select least(t.MondayHrs,8) 
    + least(t.TuesdayHrs,8)
    + least(t.WednesdayHrs,8)
    + least(t.ThursdayHrs,8)
    + least(t.FridayHrs,8)
   ) as TotalHours
于 2015-11-25T23:25:39.790 に答える
2

別のアイデアは、CASE を使用することです。例えば:

SELECT ( 
       (CASE WHEN t.MondayHrs > 8 THEN 8 ELSE t.MondayHrs END)
       + (CASE WHEN t.TuesdayHrs > 8 THEN 8 ELSE t.TuesdayHrs END)
) as TotalHours
于 2012-11-14T23:57:31.513 に答える
1

MySQL GREATESTのような関数を書くことができます。

次に、次のようなことができます

select greatest(some_col, 8) +
       greatest(other_col, 8) + 
       ...
from your_table
于 2012-11-14T23:48:21.203 に答える