日期:2014-05-17  浏览次数:20753 次

oracle左连接统计问题
是这样的,首先a表有一列control_seq是主键,b表是附件表,b表里面的proj_id对应的是a表的control_seq,但是附件表会有多条记录,也就是说proj_id会重复。这种情况下,我想以左表为准,查询a表记录的同时对a表的附件数目进行统计。我自己做了一下,发现a left jon b,因为b会有多条附件的缘故,造成查询出来的数据会重复。多谢大大们指教。谢谢!

------解决方案--------------------
查询a表记录的同时对a表的附件数目进行统计?

是统计行数吗?

select a.control_seq,count(b.proj_id) from a left join b
on a.control_seq=b.proj_id
group by a.control_seq;
------解决方案--------------------
试试分析函数吧。
select a.control_seq ,col1,col2....., count() over(group by b.proj_id)
from a left join b
on a.control_seq=b.proj_id

如果是想统计每一control_seq对应的条数,则如上。如果是想统计b表的行数,则去掉group by 即可。
------解决方案--------------------
只是统计行数1L就可以了 不会重复
------解决方案--------------------
探讨

查询a表记录的同时对a表的附件数目进行统计?

是统计行数吗?

select a.control_seq,count(b.proj_id) from a left join b
on a.control_seq=b.proj_id
group by a.control_seq;