假设有A、B两张表,A是汇总表,而B是明细表,其中
A:
ac_id  sum
B:
ac_id  particular
sum字段代表总额,而particular代表明细,我想把B表中对应于每一个ac_id都求出和来插入A表中,请问大家SQL语句怎么写啊?

解决方案 »

  1.   

    希望对你有用,代码如下:insert into A(ac_id,sum)
    select ac_id, sum(particular)
    from B
    group by b.ac_id
      

  2.   

    insert into a select ac_id,sum(particular) from b group by ac_id
      

  3.   

    关键是现在的A表中已经有了ac_id,我现在需要把B表中的明细汇总起来填进相应的ac_id所对应的sum里,这个SQL语句该怎么写啊
      

  4.   

    update a set sum = (select sum(particular) from b where b.ac_id = a.ac_id);
      

  5.   

    呵呵 那我也来小补充一下 
    假如楼主的A表中已经有了一些记录 而B表中除了A中已有的记录还有些A中没有的记录 这就可以使用MERGE了merge into a
    using b
    on (a.ac_id=b.ac_id)
    when matched then
    update a set sum = (select sum(particular) from b where b.ac_id = a.ac_id)
    when not matched then
    insert into a select ac_id,sum(particular) from b group by ac_id
      

  6.   

    对不起,我没说清楚,我的意思是,把每天发生的明细加到汇总表的sum字段中去,大家帮帮忙啊,另外A表中的账号非常多,我只想更新每天的明细请问大哥该怎么办啊?
      

  7.   

    B表放的是一天的数据?那么update a set sum = sum + (select sum(particular) from b where b.ac_id = a.ac_id)
    where exists (select particular from b where b.ac_id = a.ac_id);
      

  8.   

    肯定有时间字段的
    where后加入时间条件就行
      

  9.   


    呵呵,这个merge用错了吧?
    merge into a
    using b
    on (a.ac_id=b.ac_id)
    when matched then
    update set sum = (select sum(particular) from b where b.ac_id = a.ac_id)
    when not matched then
    insert select ac_id,sum(particular) from b group by ac_id