IF, ELIF, ELSE в T-SQL

Я работаю в SQL Server 2008 и пытаюсь использовать IF, ELIF, ELSE заявление в SELECT раздел моего кода. Я хочу сделать следующее:

IF BO.VALUE < BO.REFERENCELOWERLIMIT
    THEN (BO.VALUE - BO.REFERENCELOWERLIMIT) #I WANT THIS TO BE NEGATIVE
ELSE IF BO.REFERENCELOWERLIMIT <= BO.VALUE <= BO.REFERENCEUPPERLIMIT
    THEN BO.VALUE
ELSE
    (BO.REFERENCEUPPERLIMIT - BO.VALUE)

проблема в том, что я не понимаю, как сделать транзакцию IF, ELIF, ELSE в SQL. Я попытался найти этот тип примера и наткнулся на примеры python...неправильный язык, поэтому я сделал поиск на сайте MSDBN и не видел такой работы, просто если/ELSE.

Спасибо

2 ответов


вы хотите CASE выражение. CASE вычисляет по порядку, и первое совпадение-это то, что возвращается в запросе.

SELECT
  CASE WHEN BO.VALUE < BO.REFERENCELOWERLIMIT 
           THEN (BO.VALUE - BO.REFERENCELOWERLIMIT)
       WHEN BO.VALUE BETWEEN BO.REFERENCELOWERLIMIT AND BO.REFERENCEUPPERLIMIT
           THEN BO.VALUE
       ELSE  (BO.REFERENCEUPPERLIMIT - BO.VALUE)
  END as MyColumnAlias
...

SELECT 
    col = CASE 
            WHEN BO.VALUE < BO.REFERENCELOWERLIMIT 
                THEN BO.VALUE - BO.REFERENCELOWERLIMIT
            WHEN BO.VALUE BETWEEN BO.REFERENCELOWERLIMIT AND BO.REFERENCEUPPERLIMIT 
                THEN BO.VALUE
            ELSE BO.REFERENCEUPPERLIMIT - BO.VALUE
FROM tbl