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

use*_*272 1 sql t-sql sql-server sql-server-2008

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

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

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

Select * from Panels p
where case when @Val > 5804400 then p.Y > 5804400 else p.Y < 5804400 end 
Run Code Online (Sandbox Code Playgroud)

And*_*yev 5

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

Select * from Panels p
where (p.Y > 5804400 and @Val > 5804400) or (p.Y < 5804400 and  @Val <= 5804400)
Run Code Online (Sandbox Code Playgroud)