要完成如下统计(oracle)涉及三张表:YYXXB(医院信息表)(yybh 医院编号,yymc 医院名称)
ZHZFB(账户支付表) (sqbh 申请编号,grzhzf 个人账户支付,tczhzf 统筹账户支付,zfyybh 支付医院编号)
ZGRZSQB(职工入转申请表) (sqbh 申请编号, rylb 人员类别)
其中:YYXXB(医院信息表).(yybh医院编号)为主键, 且为ZHZFB(账户支付表)的外键 zfyybh(支付医院编号)
ZGRZSQB(职工入转申请表).sqbh(申请编号)为主键,且为ZHZFB(账户支付表)的外键 sqbh(申请编号)
要求:以医院分组,分别统计出每个医院的各种人员类别(0,在职,1,保健,2,退休)的人数、个人账户支付(合计)、统筹账户支付(合计),
也就是:以医院分组,再以人员类别分组,统计出ZHZFB(账户支付表)的两个字段合计及人次合计
ZHZFB(账户支付表) (sqbh 申请编号,grzhzf 个人账户支付,tczhzf 统筹账户支付,zfyybh 支付医院编号)
ZGRZSQB(职工入转申请表) (sqbh 申请编号, rylb 人员类别)
其中:YYXXB(医院信息表).(yybh医院编号)为主键, 且为ZHZFB(账户支付表)的外键 zfyybh(支付医院编号)
ZGRZSQB(职工入转申请表).sqbh(申请编号)为主键,且为ZHZFB(账户支付表)的外键 sqbh(申请编号)
要求:以医院分组,分别统计出每个医院的各种人员类别(0,在职,1,保健,2,退休)的人数、个人账户支付(合计)、统筹账户支付(合计),
也就是:以医院分组,再以人员类别分组,统计出ZHZFB(账户支付表)的两个字段合计及人次合计
NVL(CASE WHEN T3.RYLB='0' THEN COUNT(T2.SQBH) END ,0),
NVL(CASE WHEN T3.RYLB='0' THEN SUM(T2.GRZHZF) END ,0),
NVL(CASE WHEN T3.RYLB='0' THEN SUM(T2.TCZHZF) END ,0),
NVL(CASE WHEN T3.RYLB='1' THEN COUNT(T2.SQBH) END ,0),
NVL(CASE WHEN T3.RYLB='1' THEN SUM(T2.GRZHZF) END ,0),
NVL(CASE WHEN T3.RYLB='1' THEN SUM(T2.TCZHZF) END ,0),
NVL(CASE WHEN T3.RYLB='2' THEN COUNT(T2.SQBH) END ,0),
NVL(CASE WHEN T3.RYLB='2' THEN SUM(T2.GRZHZF) END ,0),
NVL(CASE WHEN T3.RYLB='2' THEN SUM(T2.TCZHZF) END ,0)
FROM YYXXB T1 ,ZHZFB T2 ,ZGRZSQB T3
WHERE T1.YYBH=T2.ZFYYBH AND T2.SQBH=T3.SQBH
count(decode(RYLB, 0, zfyybh)), sum(decode(rylb, 0, grzhzf)), sum(decode(rylb, 0, tczhzf)),
count(decode(RYLB, 1, zfyybh)), sum(decode(rylb, 1, grzhzf)), sum(decode(rylb, 1, tczhzf)),
count(decode(RYLB, 2, zfyybh)), sum(decode(rylb, 2, grzhzf)), sum(decode(rylb, 2, tczhzf))
from
(
select a.sqbh, b.RYLB, a.grzhzf, a.tczhzf, a.zfyybh, d.YYMC
from ZHZFB a, ZGRZSQB b, yyxxb d
where a.sqbh = b.sqbh
and a.zfyybh = d.yybh
)
group by YYMC
case when + group by
t1.yymc, --医院名称
sum(case when t3.rylb='0' then 1 else 0 end) 在职人员总数,
sum(case when t3.rylb='1' then 1 else 0 end) 保健人员总数,
sum(case when t3.rylb='2' then 1 else 0 end) 退休人员总数,
sum(grzhzf) over(partition by rylb), --个账户支付(合计)
sum(tczhzf) over(partition by rylb) --统筹账户支付(合计)
from YYXXB T1, --医院信息表
ZHZFB T2, --账户支付表
AGRZSQB T3 --职工入转申请表
WHERE t1.yybh=t2.zfyybh(+)
and t3.shbh=t2.shbh(+)
group by t1.yybh,
t1.yymc;