知识是无价的,所以我给最高分!(两表条件插入?)
我现在有A表和B表,如下:
A表
hh pm sl
10000 XXXX 60
10001 XXXX 10
10025 XXXX 50
35685 XXXX 20
20523 XXXX 20
12584 XXXX 1000
58954 XXXX 500
52148 XXXX 2000
B表
hh pm sl
10001 XXXX 100
20523 XXXX 120
12584 XXXX 2000
58954 XXXX 600
52148 XXXX 3000
我现想把A表中的数据插入到B表中,B表没有的数据进行插入,B表中有的只将 'sl '累计,要求效果如下:
B表
hh pm sl
10000 XXXX 60
10001 XXXX 110
10025 XXXX 50
35685 XXXX 20
20523 XXXX 140
12584 XXXX 3000
58954 XXXX 1100
52148 XXXX 5000
[解决办法]
--追加B中不存在的
insert into B(hh,pm,sl)
select A.hh,A.pm,A.sl
from A left join B on A.hh=B.hh
where B.hh is null
--更新存在的
update B set sl=isnull(sl,0) + isnull(A.sl,0)
from A inner join B on A.hh=B.hh
[解决办法]
先更新再插入
update B
set sl=isnull(sl,0) + sum(isnull(A.sl,0))--如果A存在一对多关系时sum
from A inner join B on A.hh=B.hh
insert into B
select *
from
A where not exists(select 1 from b where A.hh=B.hh)