我有一个包含X和Y坐标列的对象列表。
当变量值大于5804400时,我只想选择Y坐标大于值5804400的对象。
这是我的尝试,但SQL并不喜欢它。
Select * from Panels p
where case when @Val > 5804400 then p.Y > 5804400 else p.Y < 5804400 end
答案 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