在SQL数据库中如何将一个表中某几列单元格求和后的数据,更新到另一张新表中,见下图。

如题所述

综合你的问题,提出如下解决办法:

    先将A、B表都有的产品在B表中进行累加,代码如下(mssql适用,oracle、DB2不适用):update B表 set b.入库总数量=b.入库总数量+a.入库总数量,b.库存总金额=b.库存总金额+a.库存总金额 from B表 as b,(select 料号,sum (入库数量) as 入库总数量,sum(总金额) as 库存总金额 from 表A group by 料号) as a where b.料号=a.料号

     

    再解决新产品问题,即进货表(A表)有,而库存表(B表)没有的产品。代码如下:   select 料号 from A表 where 料号 not in (select 料号 from B表)//如果有数据则执行下面一行

    insert into 表B(料号,名称,规格,入库总数量,库存总金额) select 料号,名称,规格,sum(入库数  量),sum(总金额) from 表A where 料号 not in (select 料号 from B表)group by 料号,名称,规格

 

写成动态SQL就是:

(第一句不变)

update B表 set b.入库总数量=b.入库总数量+a.入库总数量,b.库存总金额=b.库存总金额+a.库存总金额 from B表 as b,(select 料号,sum (入库数量) as 入库总数量,sum(总金额) as 库存总金额 from 表A group by 料号) as a where b.料号=a.料号

if exist(select 料号 from A表 where 料号 not in (select 料号 from B表))

begin

insert into 表B(料号,名称,规格,入库总数量,库存总金额) select 料号,名称,规格,sum(入库数量),sum(总金额) from 表A where 料号 not in (select 料号 from B表)group by 料号,名称,规格

end

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-17
insert into 表B(材料,名称,规格,入库数量,库存总金额) select 材料,名称,规格,sum(入库数量),sum(总金额) from 表A group by 材料,名称,规格
--如果有过滤条件再在group by 语句后面加上where...追问

那如果B表中‘总金额’和‘总数量’已经有数据。从A表中插入的数据在B表中进行累加呢……,能解答吗??谢谢……

追答

update a set a.总金额=a.总金额+b.总金额,a.入库数量=a.入库数量+b.入库数量 from 表B a inner join (select 材料,名称,规格,sum(入库数量) as 入库数量,sum(总金额) as 总金额 from 表A group by 材料,名称,规格)b on a.材料=b.材料 and a.名称=b.名称 and a.规格=b.规格

本回答被提问者采纳
相似回答