Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie führe ich ein IF...THEN in einem SQL SELECT durch?

Der CASE -Anweisung kommt IF in SQL am nächsten und wird von allen Versionen von SQL Server unterstützt.

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

Sie müssen nur den CAST verwenden -Operator, wenn Sie das Ergebnis als booleschen Wert wünschen. Wenn Sie mit einem int zufrieden sind , das funktioniert:

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

CASE Anweisungen können in andere CASE eingebettet werden Anweisungen und sogar in Aggregaten enthalten.

SQL Server Denali (SQL Server 2012) fügt die IIF-Anweisung hinzu, die auch in Access verfügbar ist (darauf weist Martin Smith hin):

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