有两个表A和B:
A                                 B
---------------------------       -------------------------
ID     TypeID_FK   RecordDate      TypeID       TypeName
1        01        2006-12-18        01           类型1
2        01        2006-12-18        02           类型2
3        02        2006-12-18        03     类型3其中A.TypeID_FK是外键,与B.TypeID关联。现在想得到以下统计结果:count     TypeName
-------------------
2         类型1
1         类型2
0         类型3用SQL
select count(*) as count,B.TypeName from A,B where TO_CHAR(A.RecordDate,'YYYY-MM-DD')='2006-12-28' and A.TypeID_FK=B.TypeID group by B.TypeName
查询的话,得到的结果只有:count     TypeName
-------------------
2         类型1
1         类型2也就是说count为0的类型3不显示了,有办法解决否?

解决方案 »

  1.   

    select count(a.*) as count,B.TypeName from A,B where TO_CHAR(A.RecordDate,'YYYY-MM-DD')='2006-12-28' and A.TypeID_FK(+)=B.TypeID group by B.TypeName
      

  2.   

    不管用诶,A.TypeID_FK和B.TypeID并没有不对应的情况。
      

  3.   

    都对应 那么类型3的count为什么会=0'2006-12-18'
      

  4.   

    错了,应该是这样,对不起
    select count(a.*) as count,B.TypeName from A,B where TO_CHAR(A.RecordDate(+),'YYYY-MM-DD')='2006-12-28' and A.TypeID_FK(+)=B.TypeID group by B.TypeName
      

  5.   

    select count(a.*) as count,B.TypeName from A,B where TO_CHAR(A.RecordDate(+),'YYYY-MM-DD')='2006-12-28' and A.TypeID_FK(+)=B.TypeID group by B.TypeName
      

  6.   

    数据不多的话select (select count(*) from a where a.TypeID_FK=b.TypeID and TO_CHAR(A.RecordDate,'YYYY-MM-DD')='2006-12-28') as count,b.TypeName from b;
      

  7.   

    谢谢各位,搞定了。To chd2001:这里type=3的count为0并不是因为A表的typeid=3在B表中找不到,而是A表中没有type=3的记录,所以并不是你说的那种情况。To bzszp(SongZip):bzszp斑竹果然了得,一下就看懂俺的目的了,谢谢!To wiler(@_@):老兄的方法有个小小的缺憾,就是当type=3的记录=0时也显示为1。