Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguo un IF...THEN in un SQL SELECT?

Il CASE è la più vicina a IF in SQL ed è supportata in tutte le versioni di SQL Server.

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

Devi solo usare il CAST operatore se si desidera che il risultato sia un valore booleano. Se sei soddisfatto di un int , funziona:

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

CASE le istruzioni possono essere incorporate in altri CASE dichiarazioni e anche inclusi in aggregati.

SQL Server Denali (SQL Server 2012) aggiunge l'istruzione IIF che è disponibile anche in access (sottolineato da Martin Smith):

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