表一
id    balance
01    30
02    30表二
id    yy    mm    salary
01    2007  06    10
01    2007  07    10
01    2007  08    10
02    2007  06    10
02    2007  07    10
02    2007  08    10表一与表二通过ID关联后
id    balance    yy    mm    salary
01    30         2007  06    10
01    30         2007  07    10
01    30         2007  08    10
02    30         2007  06    10
02    30         2007  07    10
02    30         2007  08    10
我要得到balance之和:
就是30+30=60?
似乎sum(distinct balance)不行

解决方案 »

  1.   

    直接对表1sum不行,为何要连接后再sum
      

  2.   

    不能直接对表一sum,因为关联后有where条件
      

  3.   

    不知道你要sum哪一个,sum表1是60,按表2id来sum是90不是60
      

  4.   

    我是要这样sum,按distinct id进行sum
    30+30=60
      

  5.   

    直接对表1 sum
    用exists关联
    select sum(balance) from 表一 as a
    where exists(select * from 表二 where id=a.id and 其它要过滤的条件)
      

  6.   


    不知道是不是这个意思
    select  a.id,a.balance,b.yy,b.mm,b.salary ,(select sum(balance) from a)as balance之和
    from 表1 as a inner join 表2 as b
    on a.id=b.id
      

  7.   

    我是要这样sum,按distinct id进行sum
    30+30=60
    _____________________按你那种说法那就应该是30+30+30=90
      

  8.   

    不好意思,弄明白什么意思了看看是不是这样的效果select t1.id,t1.balance,t2.yy,t2.mm,t2.salary ,
    (select sum(balance) from (select distinct t1.id ,balance from 表1 as t1) as  distinct_t1) as balance之和
    from 表1 as t1,表2 as t2