我试图限制特定字段,以便它们不会超过特定值。
例如,类似这样的东西就足够了,我可以指定一个字段不应超过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中是否有任何内容可以促进这一点?
答案 0 :(得分: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)
答案 1 :(得分: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
答案 2 :(得分:2)
...试
select least(t.MondayHrs,8)
+ least(t.TuesdayHrs,8)
+ least(t.WednesdayHrs,8)
+ least(t.ThursdayHrs,8)
+ least(t.FridayHrs,8)
) as TotalHours
答案 3 :(得分:1)
您可以为MySQL GREATEST编写一个函数。
然后你可以做类似
的事情select greatest(some_col, 8) +
greatest(other_col, 8) +
...
from your_table