求在sql删除特定一列中的特定字符

hahaha170127 2008-03-13 10:45:40
所属县市 小区号 区号信息 定义TCH 全速率全天总话务量 半速率全天总话务量
宜州 宜州德胜都围A HA10131 14 56.57 55.19
宜州 宜州德胜都围B HA10132 6 9.54 30.08
宜州 宜州德胜都围C HA10133 13 26.85 73.09
宜州 宜州怀远罗山A HA10161 14 24.07 0.32
宜州 宜州怀远罗山B HA10162 13 24.25 57.97
宜州 宜州怀远罗山C HA10163 13 27.3 63.84
宜州 宜州福龙京口A HA10211 6 6.16 0.16
宜州 宜州福龙京口B HA10212 6 10.04 0.55
宜州 宜州福龙京口C HA10213 13 37.63 12.15
现需要取消每个小区号的后面字符A,B,C,然后合并,例如,宜州德胜都围A,宜州德胜都围B,宜州德胜都围C三行合成一行宜州德胜都围,其中全速率和半速率话务量进行相加。然后选择出所属县市,小区号,全速率全天总话务量和半速率全天总话务量。
...全文
530 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dawugui 2008-03-13
--增加测试数据.
create table tb(所属县市 varchar(10) , 小区号 varchar(20) , 区号信息 varchar(10) , 定义TCH int , 全速率全天总话务量 decimal(18,2) , 半速率全天总话务量 decimal(18,2))
insert into tb values('宜州', '宜州德胜都围A', 'HA10131' ,14 ,56.57 ,55.19 )
insert into tb values('宜州', '宜州德胜都围B', 'HA10132' ,6 ,9.54 ,30.08 )
insert into tb values('宜州', '宜州德胜都围C', 'HA10133' ,13 ,26.85 ,73.09 )
insert into tb values('宜州', '宜州怀远罗山A', 'HA10161' ,14 ,24.07 ,0.32 )
insert into tb values('宜州', '宜州怀远罗山B', 'HA10162' ,13 ,24.25 ,57.97 )
insert into tb values('宜州', '宜州怀远罗山C', 'HA10163' ,13 ,27.3 ,63.84 )
insert into tb values('宜州', '宜州福龙京口A', 'HA10211' ,6 ,6.16 ,0.16 )
insert into tb values('宜州', '宜州福龙京口B', 'HA10212' ,6 ,10.04 ,0.55 )
insert into tb values('宜州', '宜州福龙京口C', 'HA10213' ,13 ,37.63 ,12.15 )
insert into tb values('宜州', '宜州福龙京口' , 'HA10213' ,13 ,37.63 ,12.15 )
insert into tb values('宜州', '宜州福龙京口' , 'HA10213' ,13 ,37.63 ,12.15 )
insert into tb values('宜州', '宜州福龙京口' , 'HA10213' ,13 ,37.63 ,12.15 )
go

--假设只考虑最后一位为A-Z.

select 小区号 = case when right(小区号,1) between 'A' and 'Z' then left(小区号,len(小区号)-1) else 小区号 end,
sum(全速率全天总话务量) 全速率全天总话务量,
sum(半速率全天总话务量) 半速率全天总话务量
from tb
group by case when right(小区号,1) between 'A' and 'Z' then left(小区号,len(小区号)-1) else 小区号 end

drop table tb

/*
小区号 全速率全天总话务量 半速率全天总话务量
-------------------- ---------------------------------------- ----------------------------------------
宜州德胜都围 92.96 158.36
宜州福龙京口 166.72 49.31
宜州怀远罗山 75.62 122.13

(所影响的行数为 3 行)
*/
回复
-狙击手- 2008-03-13
select 所属县市,
case when right(小区号,1) <=122 then left(小区号,len(小区号) -1) else 小区号 end as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by 所属县市, case when right(小区号,1) <=122 then left(小区号,len(小区号) -1) else 小区号 end



少一个等号
回复
dawugui 2008-03-13
create table tb(所属县市 varchar(10) , 小区号 varchar(20) , 区号信息 varchar(10) , 定义TCH int , 全速率全天总话务量 decimal(18,2) , 半速率全天总话务量 decimal(18,2))
insert into tb values('宜州', '宜州德胜都围A', 'HA10131' ,14 ,56.57 ,55.19 )
insert into tb values('宜州', '宜州德胜都围B', 'HA10132' ,6 ,9.54 ,30.08 )
insert into tb values('宜州', '宜州德胜都围C', 'HA10133' ,13 ,26.85 ,73.09 )
insert into tb values('宜州', '宜州怀远罗山A', 'HA10161' ,14 ,24.07 ,0.32 )
insert into tb values('宜州', '宜州怀远罗山B', 'HA10162' ,13 ,24.25 ,57.97 )
insert into tb values('宜州', '宜州怀远罗山C', 'HA10163' ,13 ,27.3 ,63.84 )
insert into tb values('宜州', '宜州福龙京口A', 'HA10211' ,6 ,6.16 ,0.16 )
insert into tb values('宜州', '宜州福龙京口B', 'HA10212' ,6 ,10.04 ,0.55 )
insert into tb values('宜州', '宜州福龙京口C', 'HA10213' ,13 ,37.63 ,12.15 )
go

--假设只考虑最后一位为A-Z.

select 小区号 = case when right(小区号,1) between 'A' and 'Z' then left(小区号,len(小区号)-1) else 小区号 end,
sum(全速率全天总话务量) 全速率全天总话务量,
sum(半速率全天总话务量) 半速率全天总话务量
from tb
group by case when right(小区号,1) between 'A' and 'Z' then left(小区号,len(小区号)-1) else 小区号 end

drop table tb

/*
小区号 全速率全天总话务量 半速率全天总话务量
-------------------- ---------------------------------------- ----------------------------------------
宜州德胜都围 92.96 158.36
宜州福龙京口 53.83 12.86
宜州怀远罗山 75.62 122.13

(所影响的行数为 3 行)
*/
回复
-狙击手- 2008-03-13
谢谢,还有,刚才忘了提了,还有些行是这样
宜州 宜州石别拉弄 HA10750 13 25.33 1.54
宜州 宜州古龙 HA10820 13 38.63 5.45
照这样减后面一个字符,就变成宜州古 这样了呀,这样又有什么其他办法?





select 所属县市,
case when right(小区号,1) <122 then left(小区号,len(小区号) -1) else 小区号 end as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by 所属县市, case when right(小区号,1) <122 then left(小区号,len(小区号) -1) else 小区号 end
回复
hahaha170127 2008-03-13
谢谢,还有,刚才忘了提了,还有些行是这样
宜州 宜州石别拉弄 HA10750 13 25.33 1.54
宜州 宜州古龙 HA10820 13 38.63 5.45
照这样减后面一个字符,就变成宜州古 这样了呀,这样又有什么其他办法?
回复
dawugui 2008-03-13
比较乱.慢慢来.
回复
-狙击手- 2008-03-13
select 所属县市,
left(小区号,len(小区号) -1) as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by 所属县市, left(小区号,len(小区号) -1)
回复
-狙击手- 2008-03-13
select left(小区号,len(小区号) -1) as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by left(小区号,len(小区号) -1)
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-13 10:45
社区公告
暂无公告