2016-12-19 9 views
0

where句の条件がselect文をフィルタリングするときにcaseを使用することは可能ですか?例:の場合 :ケースWhere Where節の条件。条件が唯一の場合に一致する場合はフィルタ条件を使用

Select * from table_name 
where source ='UHC' 
and 
to_char(termdate,'YYYYMM') <= '201603'; 

が、私は第二のフィルタ条件は、ポリシー番号が「1」にされた場合にのみ機能します。

case when policy_number = '1' then to_char(termdate,'YYYYMM') <= '201603'; 

ポリシー番号が句が動作するはずですが、ポリシーの数が1であるならば、where句の両方が動作するはずだけ第一、その後1でない場合:例:のために。 私は自分の状況を明確にしたいと思う。あなたがすべてでケースを必要としない

答えて

2

:あなたは常に'201603'未満のものが必要他に

where source ='UHC' and case when policy_number = '1' then to_char(termdate,'YYYYMM') else '000000' end <= '201603'); 

Select * from table_name 
where source ='UHC' 
and ((policy_number = '1' and to_char(termdate,'YYYYMM') <= '201603') 
    or nvl(policy_number, '0') != '1'); 

ケース条件では次のようになります。ここでのもう一つの問題は、varcharsとして数値を比較している理由です。それは本当に必要なものですか?

+0

ありがとうございます。 –