Вот подход, основанный на SET, для написания вашей функции в SQL Server 2008
CREATE FUNCTION [FATMS].[fnReturnByPeriod]
(
@Period INT
)
RETURNS int
AS
BEGIN
return isnull((SELECT min(v)
from (values
(1,1),
(7,2),
(30,3),
(90,4),
(180,5),
(360,6)) t(n,v)
where n >= @Period and @period>0), 0)
END
Как вы написали, все ветви CASE возвращают 1, так что вы также можете использовать
return case when @period between 1 and 360 then 1 else 0 end