2013-07-29 294 views
0

我已经遍寻搜索,并提出一个空白。我试图更新一个记录,并根据另一个表中的条件在其他表中插入其他记录。两个表都有一个通用的RecordID(一个nvarchar,因为它们包含字符)。在英语根据另一个条件在表中插入新记录

最简单的解释:

  • 如果记录ID1在ColumnA和ColumnB和ColumnC值在 表A
  • 然后,在表B,从TableA.ColumnA
  • 值更新ColumnBla
  • 然后插入一个新的记录,复制从记录ID1, 所有字段以及添加足矣“A”到的recordId
  • 然后,在这个新的记录,从 值更新CollumnBla TableA.ColumnB
  • 重复与从TableA.ColumnC值的另一个新纪录

存在其中记录有ColumnA和ColumnB值等条件,但不是在ColumnC等在这种情况下,只有一个新的记录需要添加,但他们应该出来洗。

+0

你能描述TableB的结构吗? – Gidil

+3

如何倾销模式并设置小提琴? – OzrenTkalcecKrznaric

回答

1

您可以通过使用insert with select查询将值插入表中。

因此,您的方案的查询将如下所示。

 create table @RecordsUpdated(RecordID nvarchar(max)) 

    update t 
    set ColumnBla = TableA.ColumnA 
    output 
     inserted.RecordID 
     into @RecordsUpdated 
    from 
     TableB 
     inner join TableA on TableB.RecordID = TableA.RecordID 
    where 
     TablesA.ColumnA is not null 
     and TablesB.ColumnA is not null 
     and TablesC.ColumnA is not null 

    insert into TableB(RecordID, ColumnBLa) 
    select TableA.RecordID + 'A', ColumnB 
    from 
     TableA 
     inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID 

    insert into TableB(RecordID, ColumnBLa) 
    select TableA.RecordID + 'A', ColumnC 
    from 
     TableA 
     inner join @RecordsUpdated on @RecordsUpdated.RecordID = TableA.RecordID 
+0

真是太棒了,谢谢Vasanth。我需要添加一点来获取所有的字段,但否则我尝试了它,它的工作原理。我一直在想办法,但这并不容易。 –

相关问题