标题可能说的不太清楚,下面说下问题
假设有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

解决方案 »

  1.   

    select 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
      

  2.   


    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
      

  3.   


    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
      

  4.   

    3# 缺 group by a.id
      

  5.   

    当时想用union的,想了下好像不行,连接查询不熟悉
      

  6.   

    也是。。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
    group by a.id
      

  7.   


    select id,sum(shl),sum(je)
    from(
    select * from table2
    union all
    select * from table3
    )a
    group by id 
      

  8.   

    大家好像忽略了一个问题,根据楼主所说,表1中好像有一些ID在表2当中的,所以用left join有点
    是不是要用全外连接,个人愚见,不知道我有没有理解错?
      

  9.   

    t2 t3是否要去重复 要的话union 不要的话union all