Как мне выполнить IF...THEN в операторе SQL SELECT?
IF...THEN
SQL SELECT
Например:
SELECT IF(Obsolete = 'N' OR InStock = 'Y' ? 1 : 0) AS Saleable, * FROM Product
SELECT IIF(Obsolete = 'N' OR InStock = 'Y',1,0) AS Saleable, * FROM Product
Для тех, кто использует SQL Server 2012, IIF - это функция, которая была добавлена и работает в качестве альтернативы операторам Case.
SELECT IIF(Obsolete = 'N' OR InStock = 'Y', 1, 0) AS Salable, * FROM Product
У вас может быть два варианта для реализации:
Использование IIF, представленного в SQL Server 2012:
SELECT IIF ( (Obsolete = 'N' OR InStock = 'Y'), 1, 0) AS Saleable, * FROM Product
Использование Select Case:
Select Case
SELECT CASE WHEN Obsolete = 'N' or InStock = 'Y' THEN 1 ELSE 0 END as Saleable, * FROM Product
Вопрос:
ANSI:
Select case when p.Obsolete = 'N' or p.InStock = 'Y' then 1 else 0 end as Saleable, p.* FROM Product p;
Использование псевдонимов - p в этом случае - поможет предотвратить проблемы.
p
SELECT CAST( CASE WHEN Obsolete = 'N' or InStock = 'Y' THEN ELSE 0 END AS bit ) as Saleable, * FROM Product