日期:2014-05-17  浏览次数:20394 次

求两个表数据相加的代码,在线等,急
有一个 A 表,两个字段 name,money,name是唯一的
另外一个 B 表,也有两个字段 name,money,但 name 并不是唯一的

需要将 B 表相同 name 的 money 全部相加后,再加到 A 表对应的 name 的 money 中
--------------------------
A
name, money
b001, 0
b002, 0
b003, 0
b004, 0
-----------
B
name, money
b001, 10
b001, 20
b001, 10
b002, 100
b003, 100
执行后,得到
---------------
A
name, money
b001, 40
b002, 100
b003, 100
b004, 0

------解决方案--------------------
SQL code
CREATE TABLE testA (NAME VARCHAR(10), [money]int )
 INSERT INTO testA 
 SELECT 'b001', 0
 UNION ALL 
 SELECT 'b002', 0
 UNION ALL 
 SELECT 'b003', 0
 UNION ALL 
 SELECT 'b004', 0
 
 CREATE TABLE testB (NAME VARCHAR(10), [money]int)
 INSERT INTO testB
 SELECT 'b001', 10
 UNION ALL 
 SELECT 'b001', 20
 UNION ALL 
 SELECT 'b001', 10
 UNION ALL 
 SELECT 'b002', 100
 UNION ALL 
 SELECT 'b003', 100
 
 WITH cte AS (
 SELECT NAME,SUM(money) [money]
 FROM testB
 GROUP BY NAME)
 
 UPDATE a
 SET a.[money]=b.[money] 
 FROM testA a INNER JOIN cte B ON a.NAME=b.NAME
 SELECT * FROM testA
 /*
 
 (3 行受影响)
 NAME       money
 ---------- -----------
 b001       40
 b002       100
 b003       100
 b004       0
 
 (4 行受影响)
 
 */