表A
code state
1 未审核
表B
code name num
1 1 1
1 2 2
1 3 3
表C
name num
1 1
要得到的结果表C
name num
1 2
2 2
3 3现在需要在表A状态变为审核时
添加表B中数据到表C
表A,表B通过code关联
当表C中存在表B中的name时,进行更新操作,对num进行相加
不存在时,插入数据到表C
code state
1 未审核
表B
code name num
1 1 1
1 2 2
1 3 3
表C
name num
1 1
要得到的结果表C
name num
1 2
2 2
3 3现在需要在表A状态变为审核时
添加表B中数据到表C
表A,表B通过code关联
当表C中存在表B中的name时,进行更新操作,对num进行相加
不存在时,插入数据到表C
create table #Ta
(
code int,
state varchar(10)
)
insert into #Ta
select 1,'未审核'
create table #Tb
(
code int,
num int,
name varchar(10)
)
insert into #tb
select 1,1,1 union all
select 1,2,2 union all
select 1,3,3
create table #Tc
(
name varchar(10),
num int
)
insert into #Tc
select 1,1--先插入关联数据
insert into #tc
select b.name,0 from
#tb b join #tc c on b.name != c.name join #ta a on a.code = b.code
--再更新数量
update #tc set num = isnull(c.num,0) + b.num from
#tb b left join #tc c on b.name = c.name join #ta a on a.code = b.codeselect * from #tcname num
---------- -----------
1 2
2 2
3 3(3 行受影响)