CASE表达式中的语法错误,无法纠正

时间:2019-04-16 08:14:58

标签: sql oracle case

我要在where条件中的以下代码: 条件语句类似于:

续订前一天, 保单具有新近独立的折扣(RAP16.DSCCD ='366'存在) 和 在续订时, 新近独立的折扣下降(RAP16.DSCCD ='366'下降)

我尝试了以下代码

AND case when tt.ja2_effdt_t = rap01.hmedt_t - 1
   then trim(RAP16.DSCCD) = '366'
   when trim(rap01.hmedt_t) <> tt.ja2_effdt_t) 
   then trim(RAP16.DSCCD) <> '366'
           end 

下面的代码中有一些语法错误,但是我无法纠正它。

1 个答案:

答案 0 :(得分:2)

通常最好使用AND / OR构造而不是case子句中的WHERE表达式。您probalby想要这样的东西:

AND ((tt.ja2_effdt_t = rap01.hmedt_t - 1 AND trim(RAP16.DSCCD) = '366')
     AND
     (trim(rap01.hmedt_t) <> tt.ja2_effdt_t AND trim(RAP16.DSCCD) <> '366'))