T-SQL中的IF,ELIF,ELSE

MCP*_*tor 9 t-sql sql-server-2008

我在SQL Server 2008中工作并尝试IF, ELIF, ELSESELECT我的代码部分中使用语句.我想做的是以下内容:

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)
Run Code Online (Sandbox Code Playgroud)

问题是我不明白如何在SQL中执行IF,ELIF,ELSE类型的事务.我试图搜索这种类型的示例并遇到python示例...错误的语言所以我在MSDBN网站上进行了搜索,并没有看到这种工作,只是IF/ELSE.

谢谢

JNK*_*JNK 15

你想要一个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
...
Run Code Online (Sandbox Code Playgroud)


T I*_*T I 5

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
Run Code Online (Sandbox Code Playgroud)