有一张表A 
a1 a2 a3一张表B
b1 b2 b3 b4一张表Cc1 c2 c3 c4一张表D
d1 d2 d3 d4 d5 来源表名现在的需求是 
表B同A比对,当b.b2=a.a2时取表B的部分字段插入表D并在来源表名那列标注区分是哪个表来的数据
表C同A比对,当c.b2=a.a2时取表C的部分字段插入表D并在来源表名那列标注区分是哪个表来的数据能一个语句搞定吗,或者一个存储过程

解决方案 »

  1.   


    试下这个sql是不是你想要的:insert into d (d1, d2, d3, d4, d5 ,来源表名)
    select b1, b2, b3, b4,null,'B'
    from b
    where exists(select 1 from a where a.a2=b.b2)
    union all
    select c1, c2 ,c3 ,c4,null,'C'
    from c
    where exists(select 1 from a where a.a2=c.c2)
      

  2.   

    insert into d
      (d1, d2, d3, d4, d5, 来源表名)
      select *
        from (select b1, b2, b3, b4, null b5, 'B' b6
                from b
               where exists (select 1 from a where a.a2 = b.b2)
              union
              select c1, c2, c3, c4, null, 'C'
                from c
               where exists (select 1 from a where a.a2 = c.c2)) t
       where not exists (select 1
                from d
               where d1 = t.b1
                 and d2 = t.b2
                 and d3 = t.b3
                 and d4 = t.b4
                 and 来源表名 = t.b6)