小弟遇到一个小问题,请教高手赐教,谢谢!

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中执行,谢谢大家帮忙了!