SQL if else子句可以在里面选择吗?

时间:2011-11-29 21:29:26

标签: sql sql-server sql-server-2000

我怀疑这是可能的,但是这里有。

我需要制定一个SQL查询(绝对不允许存储过程),它执行以下操作:

Select A.valueFromTable -B.ValueFromTable As result
From table as A inner join table as B
on A.ValueID = B.ValueID
Where ValueID =5

但我需要条件:

if (result <0)
Begin
select A As result ....
end
else
select A-B as result ...

任何帮助都会受到高度赞赏,即使它确认无法完成。

从搜索中我相信我目前使用的SQL Server版本是8.0

4 个答案:

答案 0 :(得分:5)

Select 
    CASE
        WHEN A.valueFromTable -B.ValueFromTable < 0 THEN A.valueFromTable 
    ELSE A.valueFromTable -B.ValueFromTable END As result
From table as A inner join table as B
on A.ValueID = B.ValueID
Where ValueID =5

答案 1 :(得分:1)

使用CASE声明:

SELECT CASE WHEN A-B < 0 THEN A ELSE A-B END AS result

答案 2 :(得分:0)

您正在寻找SQL CASE语句。

select
    case when (A-B < 0)
        then A
    else A-B
    end as result
from
    ...

答案 3 :(得分:0)

我非常有信心你可以找到一个使用IF条件的解决方案,但如果其他所有方法都失败了,也许可以尝试真正模糊的方法:SELECT(A.valueFromTable - (result&lt; 0)* B.ValueFromTable)

这取决于评估为零的错误条件。