Saltar al contenido

Obtener el mínimo de dos valores en SQL

Puede que se de el caso de que halles algún error en tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al proyecto final.

Solución:

SQL Server 2012 y 2014 es compatible con IIF (cont,true,false) función. Por lo tanto, para una selección mínima, puede usarlo como

SELECT IIF(first>second, second, first) the_minimal FROM table

Mientras que IIF es solo una forma abreviada de escribir CASE...WHEN...ELSE, es más fácil de escribir.

Caso de uso:

   Select Case When @PaidThisMonth < @OwedPast 
               Then @PaidThisMonth Else @OwedPast End PaidForPast

Como tabla en línea valorada en UDF

CREATE FUNCTION Minimum
(@Param1 Integer, @Param2 Integer)
Returns Table As
Return(Select Case When @Param1 < @Param2 
                   Then @Param1 Else @Param2 End MinValue)

Uso:

Select MinValue as PaidforPast 
From dbo.Minimum(@PaidThisMonth, @OwedPast)

ADDENDUM: Esto es probablemente mejor cuando se trata solo de dos valores posibles, si hay más de dos, considere la respuesta de Craig usando la cláusula Values.

Las soluciones que utilizan CASE, IIF y UDF son adecuadas, pero poco prácticas cuando se extiende el problema al caso general utilizando más de 2 valores de comparación. La solución generalizada en SQL Server 2008+ utiliza una aplicación extraña de la cláusula VALUES:

SELECT
PaidForPast=(SELECT MIN(x) FROM (VALUES (PaidThisMonth),(OwedPast)) AS value(x))

Crédito debido a este sitio web: http://sqlblog.com/blogs/jamie_thomson/archive/2012/01/20/use-values-clause-to-get-the-maximum-value-from-some-columns-sql- servidor-t-sql.aspx

Sección de Reseñas y Valoraciones

Nos puedes favorecer nuestra faena escribiendo un comentario y puntuándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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