我正在使用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)
问题是我不明白如何在SQL中执行IF,ELIF,ELSE类型的事务。我试图搜索这种类型的示例,并遇到了python示例...错误的语言,所以我在MSDBN网站上进行了搜索,并没有看到这种工作,只是IF / ELSE。
谢谢
答案 0 :(得分: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
...
答案 1 :(得分: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