SQL where子句大于或小于case语句

时间:2016-06-17 13:14:59

标签: sql sql-server sql-server-2008 tsql

我有一个包含X和Y坐标列的对象列表。

当变量值大于5804400时,我只想选择Y坐标大于值5804400的对象。

这是我的尝试,但SQL并不喜欢它。

Select * from Panels p
where case when @Val > 5804400 then p.Y > 5804400 else p.Y < 5804400 end 

3 个答案:

答案 0 :(得分:4)

您不能以这种方式使用case表达式,但您可以像下面这样重写:

Select * from Panels p
where (p.Y > 5804400 and @Val > 5804400) or (p.Y < 5804400 and  @Val <= 5804400)

答案 1 :(得分:0)

您可以尝试以下查询:

SELECT * 
FROM
    Panels p
WHERE
    1 =  
        CASE
            WHEN @Val > 5804400 AND p.Y > 5804400 THEN 1 
            WHEN @Val <= 5804400 AND p.Y < 5804400 THEN 1
            ELSE 0
        END

答案 2 :(得分:0)

当我想确定是否使用大于或小于基于条件的时候我使用这种方法

Select * from Panels p
where  case when @Val > 5804400 then p.Y- 5804400 else  5804400-p.Y end>=1