表很多,有5张表,其中A B C D四个表都只有 YHID(用户ID) ZS(总数) F表是YHID XM(姓名),
我想统计A B C D这四个表的全部数据,如果其中某个表没有这个YHID,而其他表有,在ZS里用0表示,我试过关联
select f.xm,nvl(a.zs,0),nvl(b.zs,0),nvl(c.zs,0),nvl(d.zs,0),a.zs+b.zs+c.zs+d.zs from A,B,C,D,F where a.yhid=b.yhid and a.yhid=f.yhid .....
这些 只得到很少量数据,而我试着用左连接时候,发现由于这ABCD四个表里,YHID不一致,有些表里的YHID有些表里就不一定有,比如A表有104条记录,B表有90条记录,C表有85条记录,D表有67条记录,但是YHID这个不一定是记录多的就一定包括住记录少的,全部无重复加起来是有120来条记录的,所以无法进行左连接,,我想把这里面全部的120条记录都取出来,得到的结果中YHID都全部齐全,ZS里如果是NULL的变为0,这样能做到吗?如何做到,跪求大神帮忙
------解决方案--------------------
就模拟了3个表,意思是一样的
- SQL code
with a as (select '1' id,7 num from dualunion allselect '2' id,8 num from dual),b as (select '1' id,9 num from dualunion allselect '3' id,10 num from dual),c as (select '1' id,'AA' na from dualunion allselect '2' id,'BB' na from dualunion allselect '3' id,'CC' na from dual)select c.na,nvl(a.num,0),nvl(b.num,0)from a,b,cwhere a.id(+) = c.idand b.id(+) = c.id