日期:2014-05-20  浏览次数:20582 次

请问如何通过 ORACLE SQL语句实现如下统计
表结构:


单位编码  单位名称  上级单位编码 统计类型   count 
10000000   中国                    VI 10
10000000   中国                    DS 20
11000000   北京     10000000       VI 5
11000000   北京     10000000       DS 3
12000000   上海     10000000       VI 2
12000000   上海     10000000       DS 3
11000001   朝阳区   11000000       VI 5
11000002   怀柔区   11000000       VI 3
11000002   怀柔区   11000000       DS 3

要求:如何通过 ORACLE SQL语句实现如下统计

当输入中国编码 10000000 的时候,求中国count总数,包括它自己和他的孩子(注意根据统计类型分组)
当输入北京编码 11000000 的时候,求北京count总数,包括它自己和他的孩子(注意根据统计类型分组)
当输入怀柔区编码 11000002 的时候,求怀柔区count总数,包括它自己和他的孩子(注意根据统计类型分组)


效果:
10000000 中国 VI 23
10000000 中国 DS 29

11000000 北京 VI 13
11000000 北京 DS 6
11000002 怀柔区 VI 3
11000002 怀柔区 DS 3
------解决方案--------------------
select 单位编码,单位名称, sum(count) from( form (select 上级单位编码 as 单位编码,单位名称, sum(count) as count  from table where  上级单位编码='10000000' group by 单位编码,单位名称, 上级单位编码) union all (select 上级单位编码 as 单位编码,单位名称, count from table where  单位编码='10000000') tempTable) group  by 单位编码,单位名称
------解决方案--------------------
select count(1) from a start with ....connect by...
树查询就好了啊