求对数值范围判定SQL语句?

asdw001 2007-12-24 05:02:40


表a的结构如下:
id t a1
1 ta 0
2 tc 4
3 tt 7
4 rt 7
5 gg 14
6 sr 22
7 qq 4
8 sd 7
9 vs 50
10 ws 10
11 rf 9

要求对表a中a1列的数值进行判定,结果输到b表中。
若值在0---5之间,对应的b1列上标明b05
若值在6---9之间,对应的b1列上标明b69
若值在10---14之间,对应的b1列上标明small
若值在15---30之间,对应的b1列上标明big
若值在30之上,对应的b1列上标明null

判定后,b表的结果如下:
id t a1 b1
1 ta 0 b05
2 tc 4 b05
3 tt 7 b69
4 rt 7 b69
5 gg 14 small
6 sr 22 big
7 qq 4 b05
8 sd 7 b69
9 vs 50 null
10 ws 10 small
11 rf 9 b69

/*表a的代码如下:
create table a(id int,t text,a1 int)
insert into a values(1,'ta',0)
insert into a values(2,'tc',4)
insert into a values(3,'tt',7)
insert into a values(4,'rt',7)
insert into a values(5,'gg',14)
insert into a values(6,'sr',22)
insert into a values(7,'qq',4)
insert into a values(8,'sd',7)
insert into a values(9,'vs',50)
insert into a values(10,'ws',10)
insert into a values(11,'rf',9)
go*/

...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
areswang 2007-12-24
  • 打赏
  • 举报
回复
接了吧,我就不写了。
bqb 2007-12-24
  • 打赏
  • 举报
回复
更正:
 select id,t,a1,case when a1 between 0 and 5 then 'b05'
when a1 between 6 and 9 then 'b09'
when a1 between 10 and 14 then 'small'
when a1 between 15 and 30 then 'big'
else null end as b1 from a
桃花岛黄岛主 2007-12-24
  • 打赏
  • 举报
回复
都解答出来了,我就接分吧
fa_ge 2007-12-24
  • 打赏
  • 举报
回复
case when
-狙击手- 2007-12-24
  • 打赏
  • 举报
回复
create table a(id int,t text,a1 int) 
insert into a values(1,'ta',0)
insert into a values(2,'tc',4)
insert into a values(3,'tt',7)
insert into a values(4,'rt',7)
insert into a values(5,'gg',14)
insert into a values(6,'sr',22)
insert into a values(7,'qq',4)
insert into a values(8,'sd',7)
insert into a values(9,'vs',50)
insert into a values(10,'ws',10)
insert into a values(11,'rf',9)
go


select id,cast(t as varchar) t,a1,
[b1] =case when a1 between 0 and 5 then 'b05'
when a1 between 6 and 9 then 'b69'
when a1 between 10 and 14 then 'small'
when a1 between 15 and 30 then 'big'
else null end
from a

drop table a

/*

id t a1 b1
----------- ------------------------------ ----------- ------
1 ta 0 b05
2 tc 4 b05
3 tt 7 b69
4 rt 7 b69
5 gg 14 small
6 sr 22 big
7 qq 4 b05
8 sd 7 b69
9 vs 50 NULL
10 ws 10 small
11 rf 9 b69

(所影响的行数为 11 行)


*/
-狙击手- 2007-12-24
  • 打赏
  • 举报
回复
create table a(id int,t text,a1 int) 
insert into a values(1,'ta',0)
insert into a values(2,'tc',4)
insert into a values(3,'tt',7)
insert into a values(4,'rt',7)
insert into a values(5,'gg',14)
insert into a values(6,'sr',22)
insert into a values(7,'qq',4)
insert into a values(8,'sd',7)
insert into a values(9,'vs',50)
insert into a values(10,'ws',10)
insert into a values(11,'rf',9)
go


select id,cast(t as varchar) t,a1,
[b1] =case when a1 between 0 and 5 then 'b05'
when a1 between 6 and 9 then 'b69'
when a1 between 10 and 14 then 'small'
when a1 between 15 and 30 then 'big'
else 'unknow' end
from a

drop table a

/*

id t a1 b1
----------- ------------------------------ ----------- ------
1 ta 0 b05
2 tc 4 b05
3 tt 7 b69
4 rt 7 b69
5 gg 14 small
6 sr 22 big
7 qq 4 b05
8 sd 7 b69
9 vs 50 unknow
10 ws 10 small
11 rf 9 b69

(所影响的行数为 11 行)


*/
bqb 2007-12-24
  • 打赏
  • 举报
回复
select id,t,a1,case when a1 between 0 and 5 then 'b05',
when a1 between 6 and 9 then 'b09',
when a1 between 10 and 14 then 'small',
when a1 between 15 and 30 then 'big',
else null end as b1 from b



34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧