表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

解决方案 »

  1.   


    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 行受影响)