34,838
社区成员




--增加测试数据.
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 行)
*/
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
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 行)
*/
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
select 所属县市,
left(小区号,len(小区号) -1) as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by 所属县市, left(小区号,len(小区号) -1)
select left(小区号,len(小区号) -1) as 小区号,
sum(全速率)全速率,
sum(半速率) 半速率
from T
group by left(小区号,len(小区号) -1)