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