case when做判断.
具体怎么搞,还得看看.

解决方案 »

  1.   

    select 
      case when 积分 > 500 then '白银会员'
           when 积分 >= 120 and 积分 <= 500 then '青铜会员'
           when 积分 >= 50  and 积分 <= 120 then '普通会员'
      end as 会员类型
    from tb这是我写的,至于具体的临界值,你自己写.
      

  2.   

    叫你老师来CSDN跟老乌龟学学吧.
      

  3.   

    比如,会员类型如下 
    类型名             下限 
    普通会员           0 
    青铜会员           100 
    白银会员           500 
    select  [会员类型] = (select top 1 普通会员 from 会员类型表 where 下限 < a.积分 order by 下限 asc) 
    ,*
    from tb a
      

  4.   

    set nocount on
    declare @会员 table (ID int,姓名 varchar(10),积分 int) 
    declare @会员类型 table(类型名 varchar(10),下限 int)
    insert @会员类型 select 
    '普通会员',                       0   union select 
    '青铜会员',                       100   union select   
    '白银会员',                       500   union select   
    '黄金会员',                       10000  
    insert @会员 select 1,'张三',100
    insert @会员 select 1,'李四',500
    insert @会员 select 1,'王五',300
    insert @会员 select 1,'刘六',10
    insert @会员 select 1,'胡大',100select * from @会员
    /*
    ID          姓名         积分          
    ----------- ---------- ----------- 
    1           张三         100
    1           李四         500
    1           王五         300
    1           刘六         10
    1           胡大         100
    */
    select  [会员类型] = (select top 1 类型名 from @会员类型 where 下限 > a.积分 order by 下限 asc) 
    ,*
    from @会员 a
    /*会员类型       ID          姓名         积分          
    ---------- ----------- ---------- ----------- 
    白银会员       1           张三         100
    黄金会员       1           李四         500
    白银会员       1           王五         300
    青铜会员       1           刘六         10
    白银会员       1           胡大         100
    */
      

  5.   

    借用无枪的狙击手的数据..declare @会员 table (ID int,姓名 varchar(10),积分 int) 
    declare @会员类型 table(类型名 varchar(10),下限 int)
    insert @会员类型 select 
    '普通会员',                       0   union select 
    '青铜会员',                       100   union select   
    '白银会员',                       500   union select   
    '黄金会员',                       10000  
    insert @会员 select 1,'张三',100
    insert @会员 select 2,'李四',500
    insert @会员 select 3,'王五',30000
    insert @会员 select 4,'刘六',10
    insert @会员 select 5,'胡大',100select b.id,b.姓名,b.积分,isnull(a.类型名,'黄金会员') 类型名
    from @会员 b
     left join
    (
        select 类型名,下限,上限=(select min(下限) from @会员类型 where 下限>a.下限)-1
        from @会员类型 a
    ) a
    on b.积分>=a.下限 and b.积分<a.上限
    order by b.id /*
    id          姓名         积分          类型名        
    ----------- ---------- ----------- ---------- 
    1           张三         100         青铜会员
    2           李四         500         白银会员
    3           王五         30000       黄金会员
    4           刘六         10          普通会员
    5           胡大         100         青铜会员(所影响的行数为 5 行)
    */
      

  6.   

    叫你老师来CSDN跟无枪的狙击手学学吧.
      

  7.   

    谢谢,根据你们的算法,我想到了更好的解决办法select id, 姓名,性别,积分, 类型名, 折扣, 备注
    from 会员类型 t join (SELECT c.*,(select max(下限) from 会员类型 where c.积分 >= 下限) a  
         from 会员 c
         )table1
         on t.下限 = table1.a这样就不需要有最高的上限了
    十分感谢