Parece mentira pero es cierto… en SQL Server no tenemos ninguna función para saber el mínimo o máximo entre 2 números.
Podéis usar la alternativa del ‘case when …’, pero si lo vais a utilizar bastante o queréis que el código sql quede un poco más legible, os recomendamos usar estas funciones de usuario.
Son unas funciones muy sencillas y es muy fácil usarlas.
Os dejamos una para el MIN y otra para el MAX, tanto para enteros (int) como para flotantes (float).
Aquí tenéis el código:
create function my_max(@val1 int, @val2 int)
returns int
as
begin
if @val1 > @val2
return @val1
return isnull(@val2,@val1)
end
GO
create function my_min(@val1 int, @val2 int)
returns int
as
begin
if @val1 < @val2
return @val1
return isnull(@val2,@val1)
end
GO
create function my_maxfloat(@val1 float, @val2 float)
returns float
as
begin
if @val1 > @val2
return @val1
return isnull(@val2,@val1)
end
GO
create function my_minfloat(@val1 float, @val2 float)
returns float
as
begin
if @val1 < @val2
return @val1
return isnull(@val2,@val1)
end
GO
Espero que os sea útil!
Dejo aquí mi alternativa, utilizando expresiones matemáticas:
Para el máximo:
(x +y + ABS(x-y))/2
Para el mínimo:
(x +y – ABS(x-y))/2
Gracias por tu aportación!
Just what I was searching for, thank you for putting up.
como se podria aplicar para fechas?
Debería ser bastante parecido…
A ver si mañana le echo un ojo.
😉
Saludos!