sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo realizo un IF...THEN en un SQL SELECT?

El CASE es la declaración más cercana a IF en SQL y es compatible con todas las versiones de SQL Server.

SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

Solo necesitas usar el CAST operador si desea que el resultado sea un valor booleano. Si está satisfecho con un int , esto funciona:

SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

CASE las declaraciones se pueden incrustar en otros CASE declaraciones e incluso incluidas en agregados.

SQL Server Denali (SQL Server 2012) agrega la declaración IIF que también está disponible en el acceso (señalado por Martin Smith):

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product