求关于分组汇总查询有关问题
求关于分组汇总查询问题
有三个表
a :riskcode,riskname 险种代码,险种名称
b : managecom,prem,riskcode 机构代码,保费,险种代码
c : comcode,name 机构代码,机构名称
其中机构代码为8位(机构分为总公司,分公司,子公司)
分公司代码占前面4位
如: XX分公司代码为86010000
其子公司为86010001,86010002等
我现在想统计各个险种中各个分公司的保费总额
分公司保费总额 = 分公司保费 + 其所有子公司的保费
我写如下SQL 语句但是结果有很多重复数据
正确的写法应该怎样?
麻烦大家帮忙一下,谢谢!
------解决方案--------------------
加个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
------解决方案--------------------
有三个表
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;
------解决方案--------------------
楼主,你是哪个保险公司的?我也是做这行的。呵呵!