医院名称                        医院等级             管辖类别             得分上海市卢湾区东南医院                 一级                省级
上海市宝山区大场医院                 一级                省级
上海市第一人民医院宝山分院           二级                市级       
上海市宝山区宝山中心医院             二级                省级    
上海市宝山区罗店医院                 三级                县级
上海市宝山区仁和医院                 三级                县级
上海市宝山区妇幼保健院               二级                市级
上海市宝山区精神卫生中心             三级                县级
上海市宝山区一钢医院                 二级                市级
上海市长宁区同仁医院                 二级                市级
     
现在我要实现通过‘医院等级’和‘管辖类别’得出分数,把值给字段:得分
其中:医院等级:一级得分10   二级得分9    三级得分8
      管辖类别:省级得分10   市级得分9   县级得分8

解决方案 »

  1.   

    不用
    用case when
    select  case when 医院等级='一级' then 10 when 医院等级='二级' then 9 end
    from tb
      

  2.   

    update tb set 
     得分=(case 管辖类别 when '一级' then 10 when '二级' then 9 when '三级' then 8 else 0 edn)+
         (case 管辖类别 when '省级' then 10 when '市级' then 9 when '县级' then 8 else 0 end)
      

  3.   


    create table tb_ylb
    (
     医院名称  varchar(30),
     医院等级  varchar(10),
     管辖类别  varchar(10),
        得分   int
    )
    ----插入测试数据---------
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市卢湾区东南医院','一级','省级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区大场医院','一级','省级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市第一人民医院宝山分院','二级','市级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区宝山中心医院 ','二级','省级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区罗店医院','三级','县级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区仁和医院','三级','县级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区妇幼保健院','二级','市级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区精神卫生中心','三级','县级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市宝山区一钢医院','二级','市级')
    insert into tb_ylb(医院名称,医院等级,管辖类别)values('上海市长宁区同仁医院 ','二级','市级')
    ----查看表中内容---------
    select * from tb_ylb
    ----程序要求:要实现通过‘医院等级’和‘管辖类别’得出分数,把值给字段:得分=医院等级分+管辖类别分
    ---其中:医院等级:一级得分10 二级得分9 三级得分8
    ---管辖类别:省级得分10 市级得分9 县级得分8----要求的结果代码如下-----
    select 医院名称,
           医院等级,
           管辖类别,
           (医院等级分+管辖类别分) as 得分 
      from
          (select 医院名称,
                  医院等级,
                  管辖类别,
                  case 医院等级
                       when '一级' then 10
                       when '二级' then 9
                       when '三级' then 8
                   end  as 医院等级分,
                  case 管辖类别
                       when '省级' then 10
                       when '市级' then 9
                       when '县级' then 8
                   end as 管辖类别分
    from tb_ylb) b