现在的问题是:我有一个客户表B(比如说查出来100条客户记录),然后这个表B和客户走货表A进行关联(用客户编号),查询客户一个月的走货情况,如果这个月有的客户没有走货的话,要补0(保证结果也是100条记录),现在我的结果是只把那些走货的客户的信息查出来了(少于100条),没走货的我要给他补0,怎么办?请教了
Select b.Kh_Bianhao,decode(count(a.yundan_hao),Null,0,count(a.yundan_hao)) ps
from yundan a,kehu b 
Where b.Kh_Bianhao = a.a_Yundan_Dsfzh(+) 
And a.yundan_shrq >= to_date('2005-7-1'||' 00:00:00','yyyy-mm-dd hh24:mi:ss') 
And a.yundan_shrq <= to_date('2005-7-31'||' 23:59:59','yyyy-mm-dd hh24:mi:ss')
Group By b.Kh_Bianhao
kehu  客户表     yundan 运单表我用了b.Kh_Bianhao = a.a_Yundan_Dsfzh(+) 也不行,我估计是decode(count(a.yundan_hao),Null,0,count(a.yundan_hao)) ps 这句的问题,我想要
看count出来有没有数,如果没有数就是写0,如果有数就写count(a.yundan_hao)

解决方案 »

  1.   

    Select b.Kh_Bianhao,sum(decode(a.yundan_hao,Null,0,1)) ps
    from yundan a,kehu b 
    Where b.Kh_Bianhao = a.a_Yundan_Dsfzh(+) 
    And a.yundan_shrq >= to_date('2005-7-1'||' 00:00:00','yyyy-mm-dd hh24:mi:ss') 
    And a.yundan_shrq <= to_date('2005-7-31'||' 23:59:59','yyyy-mm-dd hh24:mi:ss')
    Group By b.Kh_Bianhao
      

  2.   

    waterfirer(水清) ,首先非常感谢您的帮助,但是按照您的方法得出的结果还是一样,只查出走货的客户的信息(没有把没走货的客户补0),我觉得是sum(decode(a.yundan_hao,Null,0,1)) ps这句关键的问题是a.yundan_hao不会为null,那些没走货的客户根本查不出来记录所以就不是null,所以还是不行,继续期待高手的指点!!!!!!!
      

  3.   

    我估计是decode(count(a.yundan_hao),Null,0,count(a.yundan_hao)) ps 这句的问题,我想要
    看count出来有没有数,如果没有数就是写0,如果有数就写count(a.yundan_hao)
    --------------------------------------
    这句有问题,一般情况下如果记录不为空的话,count(a.yundan_hao)不会为null吧,还是没明白你要的什么结果,最好给点测试数据看看
      

  4.   

    最上面的需求,我觉得我写的挺清楚的,现在客户表有100条记录,我查询一个月的客户的走货情况,比如只有70个客户在这个月走货了,按照我的sql和waterfirer(水清) 的sql查询出来的都只是这70个客户的货量,我想要的是把剩下的30个客户也给我列出来,后面走货信息填上0,这样就能把100个客户一个月的走货信息全部列出来了,有走货的就count出客户的货量,没有走货的就写0,这样你就明白了吧?
      

  5.   

    试下
     select b.Kh_Bianhao,decode(count(a.ps),Null,0,count(a.ps)) ps from 
         (select Kh_Bianhao from b group by Kh_Bianhao) b,
         (select Yundan_Dsfzh,count(yundan_hao) as ps from a where a.yundan_shrq >= to_date('2005-7-1'||' 00:00:00','yyyy-mm-dd hh24:mi:ss') And a.yundan_shrq <= to_date('2005-7-31'||' 23:59:59','yyyy-mm-dd hh24:mi:ss')  group by a.Yundan_Dsfzh) a 
          where a.Kh_Bianhao=b.Yundan_Dsfzh(+)
      

  6.   

    非常感谢liguocai888() 的帮助,虽然还有一些小问题,但是我修改了,已经实现我的功能了,昨天晚上我也想到要这么做,但是比你想的还是差了一步,感谢呀!!!