首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求关于分组汇总查询有关问题

2011-12-28 
求关于分组汇总查询问题有三个表a :riskcode,riskname 险种代码,险种名称b : managecom,prem,riskcode机构

求关于分组汇总查询问题
有三个表
a :riskcode,riskname 险种代码,险种名称
b : managecom,prem,riskcode 机构代码,保费,险种代码
c : comcode,name 机构代码,机构名称
其中机构代码为8位(机构分为总公司,分公司,子公司)
分公司代码占前面4位
如: XX分公司代码为86010000
  其子公司为86010001,86010002等
我现在想统计各个险种中各个分公司的保费总额
分公司保费总额 = 分公司保费 + 其所有子公司的保费
我写如下SQL 语句但是结果有很多重复数据

SQL code
SELECT  a.riskcode 险种代码, a.riskname 险种名称, substr(b.managecom,1,4) 机构代码, c.name 机构名称 SUM(b.prem) over(partition by a.riskcode, substr(b.managecom,1,4)) 保费 FROM a a, b b, c c WHERE a.riskcode = b.riskcode AND b.managecom = c.comcode 



正确的写法应该怎样?
麻烦大家帮忙一下,谢谢!

[解决办法]
加个distinct可以吗?
[解决办法]
SELECT A.riskcode,A.riskname,c.comcode,c.NAME,
sum(b.prem)
FROM A,b,c
WHERE c.comcode LIKE '%0000'
AND b.managecom LIKE substr(c.comcode,1,4)||'%'
AND b.riskcode=A.riskcode
GROUP BY A.riskcode, A.riskname, c.comcode, c.NAME
[解决办法]
SQL code
--不需要用分析函数吧,这个SELECT d.riskcode 险种代码, d.riskname 险种名称, c.comcode 机构代码, c.name 机构名称 d.prem 保费  FROM c,       (SELECT a.riskcode, a.riskname, substr(b.managecom, 1, 4) managecom, SUM(b.prem) prem          FROM a, b         WHERE a.riskcode = b.riskcode AND         GROUP BY a.riskcode, a.riskname, substr(b.managecom, 1, 4)) d, WHERE d.managecom || '0000' = c.comcode;
[解决办法]
楼主,你是哪个保险公司的?我也是做这行的。呵呵!

热点排行