有两张表,表一根据表二的内容进行汇总求和,如果在表一不存在的记录添加进行汇总。
表一
列1 列2
A 0
B 0
C 0
表二
列1 列2 列3
A 1 2
B 11 22
C 111 222
D 100 200
E 200 300
F 300 400
汇总后表一
列1 列2
A 3
B 33
C 333
D 300
E 500
F 700
请高手帮忙了!给出一条SQL语句来实现!谢了
------解决方案--------------------
- SQL code
create table 表一(列1 varchar(10), 列2 int)insert into 表一 values('A', 0)insert into 表一 values('B', 0)insert into 表一 values('C', 0)create table 表二(列1 varchar(10),列2 int,列3 int)insert into 表二 values('A', 1 ,2)insert into 表二 values('B', 11 ,22)insert into 表二 values('C', 111 ,222)insert into 表二 values('D', 100 ,200)insert into 表二 values('E', 200 ,300)insert into 表二 values('F', 300 ,400)go--查询select m.列1 , m.列2 + m.列3 列2 from 表二 m left join 表一 n on m.列1 = n.列1/*列1 列2 ---------- ----------- A 3B 33C 333D 300E 500F 700(所影响的行数为 6 行)*/--更新:update 表一 set 列2 = (select m.列2 + m.列3 from 表二 m where m.列1 = n.列1) from 表一 ninsert into 表一 select m.列1 , m.列2 + m.列3 列2 from 表二 m where not exists(select 1 from 表一 n where m.列1 = n.列1)select * from 表一/*列1 列2 ---------- ----------- A 3B 33C 333D 300E 500F 700(所影响的行数为 6 行)*/ drop table 表一 , 表二