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