求一存储过程,有点复杂的。
先说下各张表。。。
机构表如下(t1)
机构ID机构名称
1中国
101浙江
10101杭州
1010101杭州1号
1010102杭州2号
10102宁波
1010201宁波1号
1010202宁波2号
1010203宁波3号
10103温州
102江西
103黑龙江
104广西
机构映射表如下(t2)
说明(从这张表中,可以查询出机构的所有下属机构,比如要查询机构id为101的下属机构
select 机构id from t2 where 上级机构ID=101)
上级机构ID机构ID
11
1101
1102
1103
110103
11010203
11010202
11010201
110102
1104
110101
101101
1011010202
1011010203
1011010201
10110103
10110101
10110102
102102
103103
104104
1010110101
1010210102
101021010201
101021010203
101021010202
1010310103
10102011010201
10102021010202
10102031010203
数据视图如下如下(t3)
金额TERM_ID机构ID机构名称
509387501010201宁波1号
509387501010201宁波1号
509387501010201宁波1号
509835941010202宁波2号
509835941010202宁波2号
509835941010202宁波2号
509835941010202宁波2号
509387501010203宁波3号
509387201010203宁波3号
509387201010203宁波3号
509387201010203宁波3号
509381501010101杭州1号
509381501010101杭州1号
509383501010101杭州1号
509382501010101杭州1号
509386501010102杭州2号
输入机构查询出如下的表,比如传入机构ID是10101,则要查询出10101机构下的所有机构数据(可以通过机构映射表查询出该机构ID的所有下属机构),如下
机构ID机构名称金额记录数
10101杭州2505
1010101杭州1号2004
1010102杭州2号501
注(金额为该所属机构下的sum,记录数为该机构下的count)
在如果传入的机构是是101
机构ID机构名称金额记录数
101浙江80016
10101杭州2505
1010101杭州1号2004
1010102杭州2号501
10102宁波55011
1010201宁波1号1503
1010202宁波2号2004
1010203宁波3号2004
求这么个存储过程。。。有点复杂的。谢谢
[解决办法]
select 机构ID,机构名称,sum(金额) as 金额,count(*) as 记录数
from 数据视图
where 机构ID in (select 机构id from t2 where 上级机构ID=101)
group by 机构ID,机构名称
你的sql
[解决办法]
下面是我测试的数据, 根据你帖子里提到的数据生成..
create table t1(
id varchar2(60),
name varchar2(60)
);
create table t2(
parent_idvarchar2(60),
idvarchar2(60)
);
create table t3(
amountnumber(15),
term_idvarchar2(60),
idvarchar2(60),
name varchar2(60)
);
[解决办法]
insert into t1 ( id, name ) values ( '1 ', '中国 ');
insert into t1 ( id, name ) values ( '101 ', '浙江 ');
insert into t1 ( id, name ) values ( '10101 ', '杭州 ');
insert into t1 ( id, name ) values ( '1010101 ', '杭州1号 ');
insert into t1 ( id, name ) values ( '1010102 ', '杭州2号 ');
insert into t1 ( id, name ) values ( '10102 ', '宁波 ');
insert into t1 ( id, name ) values ( '1010201 ', '宁波1号 ');
insert into t1 ( id, name ) values ( '1010202 ', '宁波2号 ');
insert into t1 ( id, name ) values ( '1010203 ', '宁波3号 ');
insert into t1 ( id, name ) values ( '10103 ', '温州 ');
insert into t1 ( id, name ) values ( '102 ', '江西 ');
insert into t1 ( id, name ) values ( '103 ', '黑龙江 ');
insert into t1 ( id, name ) values ( '104 ', '广西 ');
[解决办法]
请问一下,你的
1
101
10101
的上下级规律是一定的吗?如果是,呵呵,那就容易得很了