是否可以在where子句中使用case来过滤select语句。 对于Eg:
Select * from table_name
where source ='UHC'
and
to_char(termdate,'YYYYMM') <= '201603';
但我希望第二个过滤条件仅在政策编号为&#39; 1&#39;时才有效。对于Eg:
case when policy_number = '1' then to_char(termdate,'YYYYMM') <= '201603';
如果策略编号不是1,那么只有1st where子句可以工作,但如果策略编号为1,那么where子句都应该工作。 我希望我的情况清楚。
答案 0 :(得分:2)
你根本不需要案件:
Select * from table_name
where source ='UHC'
and ((policy_number = '1' and to_char(termdate,'YYYYMM') <= '201603')
or nvl(policy_number, '0') != '1');
案件条件如下:
where source ='UHC' and case when policy_number = '1' then to_char(termdate,'YYYYMM') else '000000' end <= '201603');
在其他地方你需要的东西总是小于'201603'
。这里的另一个问题是你为什么要将数字作为变量进行比较?这真的是你需要的吗?