日期:2014-05-18  浏览次数:20568 次

一个统计问题,已经做了很久了,还是没做出来,麻烦大家帮我解决一下
表1:TelClass
      字段(Tname,Tvalue)  
      数据如:   移动,135|138|139
                        联通,130|131|132
                        ............
表2:TelNubmer
      字段(ID,TelNumber,Type)
      数据如:(1,13880056625,汽车)
                      (2,13035687567,自行车)
                      (3,13965588847,火车)
                      (4,13169985547,摩托车)
                      (5,13069369857,火车)
                      (6,13054711369,自行车)
                      ..............
统计要求如下:
按交通工具的类型(Type)分组统计各类电话的个数如:

交通工具   移动   联通
-------------------
汽车           1             0
自行车       0             2
火车           1             1
摩托车       0             1

如何写出这个统计语句,麻烦大家帮我解决一下,已经做了很久了,还是没做出来

------解决方案--------------------
create table TelClass(Tname varchar(10) , Tvalue varchar(20))
insert into TelClass values( '移动 ', '135|138|139 ')
insert into TelClass values( '联通 ', '130|131|132 ')
create table TelNubmer (ID int,TelNumber varchar(11),Type varchar(10))
insert into TelNubmer values(1, '13880056625 ', '汽车 ')
insert into TelNubmer values(2, '13035687567 ', '自行车 ')
insert into TelNubmer values(3, '13965588847 ', '火车 ')
insert into TelNubmer values(4, '13169985547 ', '摩托车 ')
insert into TelNubmer values(5, '13069369857 ', '火车 ')
insert into TelNubmer values(6, '13054711369 ', '自行车 ')
go
select type,
sum(case when tname = '移动 ' then cnt else 0 end) 移动,
sum(case when tname = '联通 ' then cnt else 0 end) 联通
from
(
select b.type , a.tname , count(*) cnt from TelClass a,TelNubmer b where charindex(left(b.telnumber,3) , a.tvalue) > 0 group by b.type,a.tname
) t
group by type

drop table TelClass,TelNubmer

/*
type 移动 联通
---------- ----------- -----------
火车 1 1
摩托车 0 1
汽车 1 0
自行车 0 2
(所影响的行数为 4 行)
*/


------解决方案--------------------
create table telClass(Tname varchar(10),Tvalue varchar(20))
insert telClass
select '移动 ', '135|138|137 ' union all
select '联通 ', '130|131|132 '

create table TelNumber(ID int,TelNumber varchar(20),Type varchar(10))
insert TelNumber
select 1, '13880056625 ', '汽车 ' union all
select 2, '13035687567 ', '自行车 ' union all
select 3, '13965588847 ', '火车 ' union all
select 4, '13169985547 ', '摩托车 ' union all
select 5, '13069369857 ', '火车 ' union all
sele