晕,在一行里啊,我给变成2行,简化如下:
select a.office_id,a.office_addr,isnull(a.price,0) as sms ,isnull(b.price,0) as phone,sum(isnull(a.price,0)+isnull(b.price,0)) as heji 
from (select office_id ,office_addr,sum(price) as price from xd_recordmsgbill  group by office_id,office_addr) a 
left join (select office_id ,sum(price) as price   from xd_recordbill   group by office_id) b 
on a.office_id=b.office_id group by a.office_id,a.office_addr,a.price,b.price

解决方案 »

  1.   

    select a.office_id,a.office_addr,isnull(a.price,0) as sms ,isnull(b.price,0) as phone,sum(isnull(a.price,0)+isnull(b.price,0)) as heji 
    from (select office_id ,office_addr,sum(price) as price 
    from xd_recordmsgbill  where tran_date>'" + rq1 + "' and tran_date <'" + rq2 + " 23:59:59'  group by office_id,office_addr) a 
    full join (select office_id ,sum(price) as price from xd_recordbill where starttime>'" + rq1 + "' and starttime<'" + rq2 + " 23:59:59'  group by office_id) b on a.office_id=b.office_id group by a.office_id,a.office_addr,a.price,b.price"
      

  2.   

    查出来了,不过office_ID和office_addr是null?
      

  3.   

    没有匹配当然是null了你加一个isnull()
      

  4.   

    我知道加上这个条件后:on a.office_id=b.office_id,就得相同才可以,现在的问题是:
    (A表中有的数据,B表中没有的数据,就以空显示.,B表中有的数据,A表中没有的数据,也以空显示.)
    我不想以空显示?
    加一个ISNULL()启不是指定了数据, 我想显示原始的?
      

  5.   

    A和B中ID不想等
    //不想等,可以让它们先走!哈哈
      

  6.   

    呵呵,今天刚好碰到你的问题,看看下面的blog
    http://blog.csdn.net/believefym/archive/2008/09/10/2907940.aspx
      

  7.   

    其实是这样的:a和B相等的,分组显示出来,
    A和B不想等的,把不相等的数据,也分组显示出来,不分组也可以的
    现在问题是:不相等的成null了,这不是想要的数据??