小弟遇到一个小问题,请教高手赐教,谢谢!
select a.dwcdh,b.dwmc,count(a.grcdh) as cdrs
from gr_cd a,dw_xx b,dw_cd c
where a.dwid=b.dwid and a.dwid=c.dwid and a.dwid<>'0000000000' and a.flag<>'1' and c.flag<>'1'
group by a.dwcdh,b.dwmc,b.dwid
order by cdrs desc
上面这个语句执行结果是下属单位人员统计情况,但其中真实数据包括一种特殊情况,即有公司名称但无人员。现在需要同时显示所有单位的人员计数,包括该单位下人员为0的,即无人员单位信息。
其中涉及3个表:
(1)gr_cd:单位人员信息储存,但单位表(dw_cd)有信息此表不一定有相应信息;需用到的列flag(状态)、dwcdh(单位存档号);
(2)dw_cd:储存单位基本信息,需用到的列flag(单位状态);
(3)dw_xx:储存单位详细信息,需用到的列dwmc(单位名称)。
三个表均可以用dwid进行相关联,执行上述语句但由于使用group by所以计数为0的就不能显示出来,希望得到高手的帮助,小弟在网上也看到相关文章,但总是执行错误,我把这个复制到下面,也希望高手帮我看看哪里出现了问题:
select dwcdh,nvl(sum(grcdh),0) as rs from gr_cd left join
(
select a.dwcdh,b.dwmc,count(a.grcdh) as cdrs
from gr_cd a,dw_xx b,dw_cd c
where a.dwid=b.dwid and a.dwid=c.dwid and a.dwid<>'0000000000' and a.flag<>'1' and c.flag<>'1'
group by a.dwcdh,b.dwmc,b.dwid
order by cdrs desc
) d
on gr_cd.dwid(+)=d.dwid
本面对对象为orcale,所以有的sql不能在orcale中执行,谢谢大家帮忙了!
转载于:https://blog.51cto.com/mcgrady/663408