读书人

group by 语句

发布时间: 2012-02-12 17:16:33 作者: rapoo

求助:group by 语句

主叫 被叫
aa 17909-22
aa 22
aa 3317909
aa 17909-3317909
aa 17909-333
aa 333
aa 3333
aa 17909-3333

得到

主叫 被叫 拨打次数
aa 222
aa 33179092
aa 3332
aa 33332


create table bb
(主叫 char(10),
被叫 char(20))

insert into bb
select 'aa ' , '17909-22 '
union all
select 'aa ' , '22 '
union all
select 'aa ' , '3317909 '
union all
select 'aa ' , '17909-3317909 '
union all
select 'aa ' , '17909-333 '
union all
select 'aa ' , '333 '
union all
select 'aa ' , '3333 '
union all
select 'aa ' , '17909-3333 '


谢谢!


[解决办法]
--try


create table bb
(主叫 varchar(10),
被叫 varchar(20))

insert into bb
select 'aa ' , '17909-22 '
union all
select 'aa ' , '22 '
union all
select 'aa ' , '3317909 '
union all
select 'aa ' , '17909-3317909 '
union all
select 'aa ' , '17909-333 '
union all
select 'aa ' , '333 '
union all
select 'aa ' , '3333 '
union all
select 'aa ' , '17909-3333 '


select 主叫,replace(被叫, '17909- ', ' ') as 被叫, 拨打次数=count(*)
from bb
group by 主叫,replace(被叫, '17909- ', ' ')
[解决办法]
同上
[解决办法]
create table bb
(主叫 char(10),
被叫 char(20))

insert into bb
select 'aa ' , '17909-22 '
union all
select 'aa ' , '22 '
union all
select 'aa ' , '3317909 '
union all
select 'aa ' , '17909-3317909 '
union all
select 'aa ' , '17909-333 '
union all
select 'aa ' , '333 '
union all
select 'aa ' , '3333 '
union all
select 'aa ' , '17909-3333 '




select 主叫,substring(被叫,1,6) as 被叫, 拨打次数=count(*)
from bb
group by 主叫,substring(被叫,1,6)
[解决办法]
create table bb
(主叫 char(10),
被叫 char(20))

insert into bb
select 'aa ' , '1790922 '
union all
select 'aa ' , '22 '
union all
select 'aa ' , '3317909 '
union all
select 'aa ' , '179093317909 '
union all
select 'aa ' , '17909333 '
union all
select 'aa ' , '333 '
union all
select 'aa ' , '3333 '
union all
select 'aa ' , '179093333 '

select 主叫,被叫,被叫次数=count(被叫) from (
select 主叫,被叫=case left(被叫,5)= '17909 ' when substring(被叫,1,5) else 被叫 end
from bb
) t group by 主叫,被叫

得到

主叫 被叫 拨打次数
aa 222
aa 33179092
aa 3332
aa 33332

[解决办法]
select 主叫,case when left(被叫,len( '17909 '))= '17909 ' then right(被叫,len(被叫)-len( '17909 ')-1) else 被叫 end,count(*)
from tbb
group by 主叫,case when left(被叫,len( '17909 '))= '17909 ' then right(被叫,len(被叫)-len( '17909 ')-1) else 被叫 end

读书人网 >SQL Server

热点推荐