我已经写了一个选择查询,但是仅当结果符合某些条件(我仍然希望看到剩余的条件)时,才需要过滤掉结果。
我尝试过包括where(当x = y和a = b然后= 1否则0结束的情况)= 1,但这会返回我不想包含的数据。
gl.col1,
gl.col2,
gl.voucher_type,
gl.reference_serie Reference_Series,
.
.
.
from table1 gl
where (case
when gl.voucher_type = '0' and gl.reference_serie='PUR ORDER'
then 1 ELSE 0 end) =1
原因是,如果您查看代码,我想排除凭证类型为0且参考意向为'PUR ORDER'的任何内容,但假设是否有凭证类型0但我想查看的参考意向不同它。 我知道我的案例中有=而不是<>,但这是为了演示我试图查找以排除它的内容。
我没有任何错误,我不确定接下来的步骤以及CASE语句是否是正确的方法。 谢谢。
答案 0 :(得分:0)
您不需要case-when
:
gl.col1,
gl.col2,
gl.voucher_type,
gl.reference_serie Reference_Series,
.
.
.
from table1 gl
where gl.voucher_type = '0' and gl.reference_serie='PUR ORDER'
答案 1 :(得分:0)
通常,您要避免在case
子句中使用where
表达式。这是两个简单的选择:
where not (gl.voucher_type = '0' and gl.reference_serie = 'PUR ORDER')
where gl.voucher_type <> '0' or gl.reference_serie <> 'PUR ORDER'
请注意,这些过滤器会过滤出NULL
值-您的表单不会。如果列具有NULL
值,则可以轻松地调整逻辑以处理该问题。