我的查询(不会运行):
SELECT * FROM TABLE A
WHERE (case when mode = 1 then Tonnage > 1000
when mode = 2 then Tonnage > 5000
else Tonnage < -1
)
我要做的是根据另一列(模式)选择不同的过滤器标准(吨位)。
但是,由于>
。
有没有办法解决它?
答案 0 :(得分:2)
您不需要case
:
where (mode = 1 and Tonnage > 1000) or
(mode = 2 and Tonnage > 5000) or
( (mode not in (1, 2) or mode is null) and Tonnage < -1)
答案 1 :(得分:0)
您也可以使用案例陈述,对两者之间的绩效结果充满好奇。
SELECT *
FROM TABLE A
WHERE (case when mode = 1 and Tonnage > 1000 then 1
when mode = 2 and Tonnage > 5000 then 1
when tonnage < -1 then 1
else 0 end
) = 1