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)
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)
consumer :
QH varchar(4)
uid varchar(5)
sf_mx:
je money
id intsf_water_p:
up money
mx_id int (对应 sf_mx.id)谢谢
我的库结构是这样的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之和;
不知道我说得够清楚不在线等
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.区号