Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como eu executo um IF...THEN em um SQL SELECT?


O CASE A instrução é a mais próxima de IF no SQL e tem suporte em todas as versões do SQL Server.
SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

Você só precisa usar o CAST operador se você quiser o resultado como um valor booleano. Se você está satisfeito com um int , isso funciona:
SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

CASE instruções podem ser incorporadas em outro CASE declarações e até mesmo incluídos em agregados.

O SQL Server Denali (SQL Server 2012) adiciona a instrução IIF que também está disponível no acesso (apontado por Martin Smith):
SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product