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.