select b.province_name,        
       (case  
       when  c.type_id=101 then set c.type_name="钻石卡"
       when  c.type_id=102 then set c.type_name="金卡"
       when  c.type_id=103 then set c.type_name= "银卡"
      else set type_name= "普通卡" 
       end case)  type_name
       sum(a.points_earned) history_earned,sum(a.points_balance) points_balance
from ecc_bj.ecc_points a,ecc_bj.ecc_sv_province b,ecc_bj.ecc_account_grade c
where a.account_grade=c.type_id and substr(a.customer_id,1,2)=b.province_id
group by c.type_name,b.province_name错误缺少表达式。
请问我该怎么改啊,case语句该怎么改昵

解决方案 »

  1.   

    select b.province_name,
           case
             when c.type_id = 101 then
              '钻石卡'
             when c.type_id = 102 then
              '金卡'
             when c.type_id = 103 then
              '银卡'
             else
              '普通卡'
           end type_name,
           sum(a.points_earned) history_earned,
           sum(a.points_balance) points_balance
      from ecc_bj.ecc_points        a,
           ecc_bj.ecc_sv_province   b,
           ecc_bj.ecc_account_grade c
     where a.account_grade = c.type_id
       and substr(a.customer_id, 1, 2) = b.province_id
     group by c.type_name, b.province_name
      

  2.   

    select b.province_name,
           (case
             when c.type_id = 101 then
              '钻石卡'
             when c.type_id = 102 then
              '金卡'
             when c.type_id = 103 then
              '银卡'
             else
              '普通卡'
           end )type_name,
           sum(a.points_earned) history_earned,
           sum(a.points_balance) points_balance
      from ecc_bj.ecc_points        a,
           ecc_bj.ecc_sv_province   b,
           ecc_bj.ecc_account_grade c
     where a.account_grade = c.type_id
       and substr(a.customer_id, 1, 2) = b.province_id
     group by c.type_name, b.province_name