日期:2014-05-16  浏览次数:20407 次

求SQL:应该是循环语句吧
表:T

ID,AMOUNT
1,1000
2,1500
3,500

需要得到的结果,LEVEL是衍生出来的列:

ID,AMOUNT,LEVEL
1,1000,消费1000以上
2,1500,消费1000以上
3,500,消费500以内

(注:实际情况比这个复杂一些,AMOUNT有10个档次,ID有10W行)
我写的case when好像不管用,可能写错了,就不在这里贴出来了。感谢各位的协助!!!
------解决方案--------------------
字典表存放level的描述,然后amount的起始值、结束值,用between and 来匹配你原有的表,这样还有另外一个好处,如果以后level的区间改动,不需要再改原有代码,直接改字典表的区间即可
------解决方案--------------------
大概就是这样,另外,最好是有具体的大小范围,比如大于多少,小于多少,是“消费1000以上”:


--drop table t

create 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以内
*/