2011-10-13 23 views
6

Acabo de descubrir que la función MAX() en SQL solo funciona en columnas.En SQL Server, cómo encontrar el valor MAX o MIN de un par de variables

¿Existe alguna función similar que pueda usarse para calcular el valor máximo de, p. estas cuatro variables?

SET @return = MAX(@alpha1, @alpha2, @alpha3, @alpha4) 

O tengo que ponerlos en una primera columna (y por lo tanto crear una tabla de primera ... ;-()?

Saludos

Lumpi

Respuesta

9

No hay construido en función de T-SQL para esto, pero se puede utilizar después de

SELECT @result = MAX(alpha) 
FROM (SELECT @alpha1 
     UNION ALL 
     SELECT @alpha2 
     UNION ALL 
     SELECT @alpha3) T(alpha); 

o (SQL Server 2008+)

SELECT @result = MAX(alpha) 
FROM (VALUES(@alpha1), 
      (@alpha2), 
      (@alpha3)) T(alpha); 
+0

¡Gracias! ¿Por qué la alternativa 1 no funciona en versiones tempranas de servidor SQl? – Lumpi

+3

@Lumpi - Alternativa 2 Creo que quieres decir? Row Value Construcvtors no se introdujeron hasta esa versión. –

+0

Realmente extraño la función 'least()' y 'greatest()' de Postgress - http://www.postgresql.org/docs/current/static/functions-conditional.html. Es mucho más fácil de leer y usar ... –

Cuestiones relacionadas