有2张表,一张地区表,一张信件表。
地区表里包含市和市下面的区。信件表里纪录的是信件所属那个地区。
地区表的主要字段包括"地区名称"和"地区编码"以及"地区级别","地区编码"的结构是:
比如A市的编码是420100,那么A市下面的第一个区的编码就是420101,如此顺延。市的"地区级别"都是2,区的"地区级别"都是3.
信件表里有个"APPEAL_AREA"的字段纪录该信件所属的地区。现在就是要分别按省和市统计出信件所属地区的情况。
如果是按省来统计。那么就列出所有的市的名称,不列出市下面的区的名称。但是统计的时候要把市下面的区的信件数量也统计到市里面。
如果按市来统计,就显示这个市下面所有区的名称和信件表里所属这个区的信件数量。
请问这个查询应该怎么写啊。求救!!!

解决方案 »

  1.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    其实就是几个where+group by。
      

  3.   

    好,我改一下。
    create table test1
    (
           id varchar(10),
           name varchar(40),
           daima varchar(20),
           grade varchar(10)
    )insert into test1 values('1','湖北省','420000','1')
    insert into test1 values('2','武汉市','420100','2')
    insert into test1 values('2','黄石市','420200','2')
    insert into test1 values('2','武汉市江岸区','420102','3')
    insert into test1 values('2','武汉市江汉区','420103','3')
    create table test2
    (
           id varchar(10),
           area varchar(20)
    )insert into test2 values('1','420102')
    insert into test2 values('2','420102')
    insert into test2 values('3','420103')/*
    要得到这样的报表:
    查询条件为'湖北省'时name                数量
    武汉市              3
    黄石市              0查询条件为'武汉市'时name                数量
    武汉市江岸区        2
    武汉市江汉区        1
    */ 
    数据库为oracle10Gdrop table test1
    drop table test2 
      

  4.   

    select a.name,count(b.id)counts
    from test1 a,test2 b
    where a.daima=rpad(substr(b.area(+),1,to_number(a.grade)*2),6,'0')
      and a.grade='3'
    group by a.name在条件a.grade=?中调整级别