Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je effectuer un IF...THEN dans un SQL SELECT ?

Le CASE est la plus proche de IF dans SQL et est prise en charge sur toutes les versions de SQL Server.

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

Il vous suffit d'utiliser le CAST opérateur si vous voulez que le résultat soit une valeur booléenne. Si vous êtes satisfait d'un int , cela fonctionne :

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

CASE les instructions peuvent être incorporées dans d'autres CASE relevés et même inclus dans les agrégats.

SQL Server Denali (SQL Server 2012) ajoute la déclaration IIF qui est également disponible en accès (indiqué par Martin Smith) :

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