标题可能说的不太清楚,下面说下问题
假设有3个表 table1(id)table2(id,shl,je),table3(id,shl,je)(表2与表3结构一致)
现在我要查询table1中所有id的sum(shl)和sum(je),其中表1中有部分id表2与表3中都有,剩下的一部分都在表2中
现在我想要的结果就是id sum(t2.shl+t3.shl) sum(t2.je+t3.je)如果是用sql语句通过一些函数应该是能够得出这样的结果 a.id,sum(t2.shl),sum(t2.je),sum(t3.shl),sum(t3.je)
不知道大家有什么好的方法?我的解决方法
先按照目标的表格式查出t2的数据#t2,然后查出t3的数据#t3,将#t2中与#t3中重复id的记录保存至临时表,然后与#t3中的数据相加,删掉#t2中重复的,再将#t3中的数据插入#t2
假设有3个表 table1(id)table2(id,shl,je),table3(id,shl,je)(表2与表3结构一致)
现在我要查询table1中所有id的sum(shl)和sum(je),其中表1中有部分id表2与表3中都有,剩下的一部分都在表2中
现在我想要的结果就是id sum(t2.shl+t3.shl) sum(t2.je+t3.je)如果是用sql语句通过一些函数应该是能够得出这样的结果 a.id,sum(t2.shl),sum(t2.je),sum(t3.shl),sum(t3.je)
不知道大家有什么好的方法?我的解决方法
先按照目标的表格式查出t2的数据#t2,然后查出t3的数据#t3,将#t2中与#t3中重复id的记录保存至临时表,然后与#t3中的数据相加,删掉#t2中重复的,再将#t3中的数据插入#t2
isnull(sum(b.je),0)+isnull(sum(c.je),0),
from table1 a
left join table2 b on b.id=a.id
left join table3 c on c.id=a.id
select a.id,isnull(sum(b.shl),0)+isnull(sum(c.shl),0),
isnull(sum(b.je),0)+isnull(sum(c.je),0),
from table1 a
left join table2 b on b.id=a.id
left join table3 c on c.id=a.id
select a.id,isnull(b.sh1,0) + isnull(c.sh1,0) as sh1,isnull(b.je,0) + isnull(c.je,0) as je
from table1 a left join (select id,sum(sh1)sh1,sum(je)je from table2 group by id)b on a.id = b.id
left join (select id,sum(sh1)sh1,sum(je)je from table3 group by id)c on a.id = c.id
isnull(sum(b.je),0)+isnull(sum(c.je),0),
from table1 a
left join table2 b on b.id=a.id
left join table3 c on c.id=a.id
group by a.id
select id,sum(shl),sum(je)
from(
select * from table2
union all
select * from table3
)a
group by id
是不是要用全外连接,个人愚见,不知道我有没有理解错?