SELECT ROUND(AVG(f.RSTF_PERCENT), 0) AS pmzj_bsp_DISCOUNT,ROUND(AVG(f.RSTF_PERCENT), 0) AS aYzj_bsp_DISCOUNT,ROUND(AVG(f.RSTF_PERCENT), 0) AS pmzj_b2b_DISCOUNT,
          ROUND(AVG(f.RSTF_PERCENT), 0) AS aYzj_b2b_DISCOUNT,ROUND(AVG(f.RSTF_PERCENT), 0) AS pmzj_b2c_DISCOUNT,ROUND(AVG(f.RSTF_PERCENT), 0) AS aYzj_b2c_DISCOUNT
            INTO v_pmzj_bsp_percent,v_aYzj_bsp_amt,v_pmzj_b2b_percent,v_aYzj_b2b_amt,v_pmzj_b2c_percent,v_aYzj_b2c_amt
            FROM AIRFARE.MV_FAREBYRULE_REPORT_DATA f
           WHERE f.ori_code = ALLROUTE.ORI_CODE
             AND f.dest_code = ALLROUTE.Dest_Code
             and instr(f.booking_class, ALLBERTH.BOOKING_CLASS) > 0
             
             
          --BSP票面直减比例 
           CASE              WHEN f.Rstf_Caculate_Type = 0 AND f.bspgroup IS NOT NULL  
              THEN  AND f.Rstf_Caculate_Type = 0 
                      AND f.bspgroup IS NOT NULL
     
          --BSP按Y直减
             WHEN f.Rstf_Caculate_Type = 4 AND f.bspgroup IS NOT NULL  
               THEN  AND f.Rstf_Caculate_Type = 4
                     AND f.bspgroup IS NOT NULL             ELSE END;就是对条件不一样走不同的when

解决方案 »

  1.   

    关键是:THEN后面怎么有AND??
      

  2.   

    去掉AND也是不行
      

  3.   

    -- 这是语法CASE 
    WHEN 条件1 THEN 值1
    WHEN 条件2 THEN 值2
    ELSE 值3
    END  AS 新列名
      

  4.   

    CASE WHEN THEN只能返回值。
      

  5.   

    你是要这样?
    case when A=0 and B is not null then 0
    when A=4 and B is not null then 4
    end as type1