select a,a.b+b.b+c.b b,e,f,g 
from a,b,c
where a.a=b.a and a.a=c.a;

解决方案 »

  1.   

    三张表中的a并不是都相等的
    楼上的写法会造成不能得到所有的数据吧这种合并是不是应该用union 来解决?我从来没用过union 我用的数据库是oracle
      

  2.   

    selce a,a.b+b.b+c.b,e,f,g
     from a inner join b on a.a=b.a 
     inner join c on c.a= b.a
      

  3.   

    inner join 只可以得到数据相同的记录
    是不是应该用left join?
    这是我刚看ms jet sql想出来的 不知道对不对其实A B C 都是记录集 这样算的话主键就是a了
    由A B C得到的新的记录集 必须包含A B C 中全部的a 而且不能重复 
      

  4.   

    select a,a.b+b.b+c.b b,e,f,g 
    from a,b,c
    where a.a=b.a and a.a=c.a
      

  5.   

    不好意思 我没说清楚
    A表如下:
     
    字段:  a b e
      值:  1 2 3
      值:  2 3 4  
    B表如下:字段:  a b f
      值:  1 2 4
      值:  3 3 3
    C表如下:字段:  a b g
      值:  3 2 4
      值:  4 2 2通过一个SQL语句得到如下的记录集
    a b e f g
    1 4 3 4 0
    2 3 4 0 0
    3 5 0 3 4
    4 2 0 0 2只要能够得到这个记录集 我马上给分
      

  6.   

    怎么没人啊?大家都去吃饭了?
    b e f g的默认值都是0
      

  7.   

    select a , sum(b) , sum(e) , sum(f) , sum(g) 
    from (
    select a.a, a.b , a.e , null f, null g from a
    union all 
    select b.a, b.b , null e , b.f, null g from b
    union all 
    select c.a, c.b , null e , null f, c.g from c

    group by a;
      

  8.   

    select a,sum(b),A.e,B.f,C.g from (select a,b,e, 0 as f, 0 as g from A) 
    union all (select a,b, 0 as e, f, 0 as g from B)
    union all (select a,b, 0 as e, 0 as f, g from C) group by a;
      

  9.   

    select a,sum(b),sum(e),sum(f),sum(g) from ((select a,b,e, 0 as f, 0 as g from A) 
    union all (select a,b, 0 as e, f, 0 as g from B)
    union all (select a,b, 0 as e, 0 as f, g from C)) group by a;
      

  10.   

    谢谢楼上!
    我执行返回的:
    ORA-01790:表达式必须具有与对应表达式相同的数据类型
    是不是因为null f 和b.f的数据类型不一致?
      

  11.   

    没想到一下子回了这么多,上面那一句是对白开心兄说的经过测试 kulama2004的是对的谢谢大家 结贴!
      

  12.   

    SQL> select * from A;          A           B           E
    ----------- ----------- -----------
              1           2           3
              2           3           4SQL> select * from B;          A           B           F
    ----------- ----------- -----------
              1           2           4
              3           3           3SQL> select * from C;          A           B           G
    ----------- ----------- -----------
              3           2           4
              4           2           2SQL> select a, sum(b), sum(e), sum(f),sum(g)
      2  from (
      3  select a.a, nvl(a.b,0) b,nvl(a.e,0) e,nvl(null,0) f,nvl(null,0) g from a
      4  union all
      5  select b.a, nvl(b.b,0) b,nvl(null,0) e,nvl(b.f,0) f,nvl(null,0) g from b
      6  union all
      7  select c.a, nvl(c.b,0) b,nvl(null,0) e,nvl(null,0) f,nvl(c.g,0) g from c
      8  )
      9  group by a;         A     SUM(B)     SUM(E)     SUM(F)     SUM(G)
    ---------- ---------- ---------- ---------- ----------
             1          4          3          4          0
             2          3          4          0          0
             3          5          0          3          4
             4          2          0          0          2
      

  13.   

    select nvl(A.a,nvl(B.a,C.a)) a, A.b+B.b+C.b b, A.e,B.f,C.g
    from A inner join B on A.a=B.a 
         inner join C on A.a=C.a