编写一个存储过程GiveGonus,实现对客户的奖励计划。具体为:
1 对18岁以下的人,积分增加1%
2 对18岁以上,30岁以下的人,积分增加5%
3 对30岁以上,40岁以下的人,积分增加10%
4 对于40岁以上的人,积分加10分
5 对于女性,采取特别奖励,如果女性客户在以上四条措施实施后,奖励的积分不足5分,那么女性客户可以享受5分的奖励,否则维持上述四条措施产生的奖励注:以上年龄均为实岁数据库中有个客户积分表CustomerBonus,该表定义为:
英文字段名     中文字段名   字段类型
CuseromerID    客户ID       数值型(主键)
IdentityCardNo 身份证号     字符型(15或18位数字)
Point          积分         数值型(主键)
Bonus          奖励积分     数值型(主键)该存储过程实质上是对客户积分表CustomerBonus进行更新,填写Bonus字段。不要告诉我用case when什么的,我要整个详细的过程,谢谢!

解决方案 »

  1.   

    懒得写了,给你个思路,楼主自己写一下啊1、根据身份证计算出客户的年龄
    2、根据客户的年龄进行判断,case then 就和if...els的语法一样
      case when age<18 then point+(point*0.1)
           when agr>=18<35 then ...
      end case;
    3、update CustomerBonus set point=... where ...
      

  2.   

    生日可以从里面截取 但是性别呢 表中没存性别字段? 如果要从身份证号里面判断性别 又麻烦了点 判断是15位还是18位 然后截取出来判断单双 再计算积分15位的身份证号:
    dddddd yymmdd xx p
    18位的身份证号:
    dddddd yyyymmdd xx p y其中dddddd为地址码(省地县三级)
    18位中的和15位中的不完全相同:
    yymmdd yyyymmdd 为出生年月日;
    xx为顺号类编码;
    p为性别;
    18位号码中末尾的y为校验码
      

  3.   

    自己计算年龄和性别, 下面用age代表年龄 ,sex代表性别,利用bool 真为1 ,假为0 就可以了
    2句sql就是先更新
    set bouns =  Point * (  0.1 * ( age < 40) - 0.05 ( age < 30 ) - 0.04 * (age < 18 ) ) + 10 * ( age >= 40) ) 
    下面再
    set bouns = 5 where sex = female and bouns < 5