要么就用10个case when,不过写的很累赘,你可以考虑间隔字典表,存放amount的范围值,然后join这个表

解决方案 »

  1.   

    字典表存放level的描述,然后amount的起始值、结束值,用between and 来匹配你原有的表,这样还有另外一个好处,如果以后level的区间改动,不需要再改原有代码,直接改字典表的区间即可
      

  2.   

    大概就是这样,另外,最好是有具体的大小范围,比如大于多少,小于多少,是“消费1000以上”:
    --drop table tcreate table t(ID int,AMOUNT int)insert into t
    select 1,1000 union all
    select 2,1500 union all
    select 3,500
    go
    select *,
           case when amount <= 500  then '消费500以内'
                when AMOUNT >= 1000 then '消费1000以上'
           end LEVEL
    from t/*
    ID AMOUNT LEVEL
    1 1000 消费1000以上
    2 1500 消费1000以上
    3 500 消费500以内
    */
      

  3.   

    你这个用case when是最好的,用字典表还不适合,因为你条件是那种范围条件
      

  4.   

    用case when已经搞定,因为我的Level是固定的区间,不过如果经常变化可以考虑这样的方法,感激。