Publicado por: 3

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!

3 Comentarios

  1. namu.net

    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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.