select substring(a.qh,1,2) as 区号,
IsNULL(Sum(c.up),0) as 合计up,
IsNULL(Sum(b.je),0) as 合计je 
from consumer a
left join sf_mx b on a.uid=b.uid
left join sf_water_p c on b.id=c.mx_id
group by substring(a.qh,1,2),b.id  --少了一个吧?
order by substring(a.qh,1,2)

解决方案 »

  1.   

    表结构
    consumer : 
    QH  varchar(4)
    uid varchar(5)
    sf_mx:
    je  money
    id  intsf_water_p:
    up  money
    mx_id int   (对应 sf_mx.id)谢谢
      

  2.   

    to zjcxc(邹建):
    我的库结构是这样的consumer 为用户表,其中的uid 是唯一的
    sf_mx 为费用合计表, 通过 uid  与consumer 关联,每个用户可能有多条记录
    sf_water_p 为费用明细表, 通过mx_id与sf_mx的id 关联, 每条sf_mx的记录可能有多条记录
    其实我就是想得到这个结果:根据 QH 的前两个字节分组,所有QH前两个字节相同的 分为一组
    显示:
    QH;
    sf_mx 表中 所有 uid 于 consumer.uid 相同记录的 je 之和  ;
    sf_water_p 中  所有 mx_id 于 sf_mx.id 相同的记录的 up之和;
    不知道我说得够清楚不在线等
      

  3.   


    select a.区号,合计je=isnull(a.合计je,0),合计up=isnull(b.合计up,0)
    from(
    select 区号=left(a.QH,2),合计je=sum(b.je)
    from consumer a
    left join sf_mx b on a.udi=b.uid
    group by left(a.QH,2)
    )a join(
    select 区号=left(a.QH,2),合计up=sum(c.up)
    from consumer a
    left join sf_mx b on a.udi=b.uid
    left join sf_water_p c on b.id=c.mx_id
    group by left(a.QH,2)
    )b on a.区号=b.区号