表1 
编号 省    县        具体货品  
1  HN    CS1      abc 
2  HN    CS2      abcd 
3  HN    CD      abcd 
4  HN    HY      ae 表2 
编号 具体货品 大类别 
1    abc    1 
2    abcd  2 
3    abcde  1 
4    ae    3 表3
编号  县    市
1    CS1    A1
2    CS2    A1 
3    CD     A2统计 每个市  大类别各有多少种,大类别的数码不确定 
结果 
省    市    大类别为1数目  大类别为2 数目 大类别为3数目  大类别为4数目 
HN  A1          1          1              0          0 
HN  A2          1          0              0          0大概这样了,求每个市下面的商品大类别的统计

解决方案 »

  1.   

    --> liangCK小梁 于2008-09-17
    --> 生成测试数据: #T1
    if object_id('tempdb.dbo.#T1') is not null drop table #T1
    create table #T1 (编号 int,省 varchar(2),市 varchar(2),具体货品 varchar(4))
    insert into #T1
    select 1,'HN','CS','abc' union all
    select 2,'HN','CS','abcd' union all
    select 3,'HN','CD','abcd' union all
    select 4,'HN','HY','ae'
    --> liangCK小梁 于2008-09-17
    --> 生成测试数据: #T2
    if object_id('tempdb.dbo.#T2') is not null drop table #T2
    create table #T2 (编号 int,具体货品 varchar(5),大类别 int)
    insert into #T2
    select 1,'abc',1 union all
    select 2,'abcd',2 union all
    select 3,'abcde',1 union all
    select 4,'ae',3--SQL查询如下:select a.省,a.市,
           SUM(case when b.大类别=1 then 1 else 0 end) [大类别为1],
           SUM(case when b.大类别=2 then 1 else 0 end) [大类别为2],
           SUM(case when b.大类别=3 then 1 else 0 end) [大类别为3],
           SUM(case when b.大类别=4 then 1 else 0 end) [大类别为4]
    from #T1 a
     join #T2 b
       on a.具体货品=b.具体货品 
    group by a.省,a.市 /*
    省    市    大类别为1       大类别为2       大类别为3       大类别为4
    ---- ---- ----------- ----------- ----------- -----------
    HN   CD   0           1           0           0
    HN   CS   1           1           0           0
    HN   HY   0           0           1           0(3 行受影响)
    */这个对吗?
      

  2.   


    --> 测试数据: [表1]
    if object_id('[表1]') is not null drop table [表1]
    create table [表1] (编号 int,省 varchar(2),县 varchar(3),具体货品 varchar(4))
    insert into [表1]
    select 1,'HN','CS1','abc' union all
    select 2,'HN','CS2','abcd' union all
    select 3,'HN','CD','abcd' union all
    select 4,'HN','HY','ae'
    --> 测试数据: [表2]
    if object_id('[表2]') is not null drop table [表2]
    create table [表2] (编号 int,具体货品 varchar(5),大类别 int)
    insert into [表2]
    select 1,'abc',1 union all
    select 2,'abcd',2 union all
    select 3,'abcde',1 union all
    select 4,'ae',3
    --> 测试数据: [表3]
    if object_id('[表3]') is not null drop table [表3]
    create table [表3] (编号 int,县 varchar(3),市 varchar(2))
    insert into [表3]
    select 1,'CS1','A1' union all
    select 2,'CS2','A1' union all
    select 3,'CD','A2'
    select a.省,c.市,
    [大类别为1数目]=sum(case 大类别 when 1 then 1 else 0 end),
    [大类别为2数目]=sum(case 大类别 when 2 then 1 else 0 end),
    [大类别为3数目]=sum(case 大类别 when 3 then 1 else 0 end),
    [大类别为4数目]=sum(case 大类别 when 4 then 1 else 0 end)
    from 表1 a,表2 b,表3 c where a.编号=b.编号 and b.编号=c.编号 group by a.省,c.市-- 结果:
    省    市    大类别为1数目     大类别为2数目     大类别为3数目     大类别为4数目     
    ---- ---- ----------- ----------- ----------- ----------- 
    HN   A1        1                 1                 0               0
    HN   A2        1                 0                 0               0