今天做统计时遇到一个问题,一张主表a表关联多张编码表,前台展示需要统计表内包含所有码值的统计结果(如没有该码值数据,统计结果为0),本想用多张编码表做主表,与a表做外连接,执行时才发现报错'ora-0417 表可以外部连接到至多一个其它的表'(低级错误ToT)
方法A:表a与编码表1做外连接,再将得到的结果与编码表2做外连接,然后再跟编码表3做外连接.....层层嵌套,太蛋疼,pass...
方法B:将所有编码表的码值,名称select distinct出来,得到需统计的编码的笛卡儿积,举个例吧,
SELECT DISTINCT b.vab568 naa001,
b.aab301 jaa051,
b.vab567 jaa050,
c.aaa102 jaa003_id,
c.aaa103 jaa003,
d.aaa102 jaa004_id,
d.aaa103 jaa004,
e.din002 age_group,
e.din004 age_stage
FROM bi_thr_qc@dl_app b,
aa10a1@dl_app c,
aa10a1@dl_app d,
t_age_group e
WHERE c.aaa100 = 'JAA003'
AND d.aaa100 = 'JAA004'
AND e.dip001 = 2
然后将此表作为主表m,与a表进行外连接,group by(统计数量的字段需用0替换空值nvl(count(a.pk),0))
done.