Esta publicación tiene origen a partir de una consulta realizada por un compañero. Es usual que esta pregunta se la hagan aquellos que vienen con conocimientos adquiridos en Access, aunque en este caso se trataba de reescribir para SQL Server una consulta originalmente escrita en MySQL (IF en vez de IIF).

Luego de buscar un poco llegué a unas FAQs que dieron solución a este problema.

Te guste o no, las consultas que utilicen IIF (o IF en MySQL) deberán ser reescritas utilizando la expresión CASE.

Veamos un simple ejemplo:

SELECT id, nombre, IF(pais="Argentina","Argentino","Extranjero") nacionalidad FROM clientes;

Como mencionamos arriba, esta consulta deberá ser reescrita utilizando la expresión CASE, quedando así:

SELECT
    id, nombre,
    CASE 
        WHEN pais="Argentina"    THEN "Argentino"
        ELSE                     "Extranjero"
    END AS nacionalidad
FROM clientes;

Esta es una consulta Transact SQL válida, la cual puede ser interpretada y ejecutada por SQL Server.

Al principio puede resultar un poco molesta la expresión, pero piensa que con IIF o IF solo puedes evaluar una expresión lógica y cuando son varios los valores posibles ir anidando "IFes", cuando con CASE no existe esa limitación, por ejemplo:

SELECT
    id, nombre,
    CASE
        WHEN pais="Argentina"    THEN "Argentino"
        WHEN pais="España"       THEN "Español"
        ELSE                     "De algun rincón del mundo"
    END AS nacionalidad
FROM clientes;

Un comentario más y por las dudas: MySQL también soporta el uso de la expresión CASE.

Como siempre y una vez más después de varios días compartiendo experiencias personales y aceptando cualquier crítica o, mejor aún, aportes.

Vía: SQLServer Performance