Sql 根据另一个表中的条件,在表中插入新记录

Sql 根据另一个表中的条件,在表中插入新记录,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我找遍了,找到了一个空白。我试图更新一条记录,并根据另一个表中的条件在一个表中插入其他记录。这两个表都有一个公共记录ID(一个nvarchar,因为它们包含字符) 最简单的英语解释: 如果记录ID1在中的列a和列B以及列C中有值 表 然后,在TableB中,使用TableA.ColumnA中的值更新ColumnBla 然后插入新记录,复制记录ID1中的所有字段, 加上将足够的“A”添加到RecordID 然后,在这个新记录中,使用来自的值更新CollumnBla 表A.B 对TableA.Co

我找遍了,找到了一个空白。我试图更新一条记录,并根据另一个表中的条件在一个表中插入其他记录。这两个表都有一个公共记录ID(一个nvarchar,因为它们包含字符)

最简单的英语解释:

  • 如果记录ID1在中的列a和列B以及列C中有值 表
  • 然后,在TableB中,使用TableA.ColumnA中的值更新ColumnBla
  • 然后插入新记录,复制记录ID1中的所有字段, 加上将足够的“A”添加到RecordID
  • 然后,在这个新记录中,使用来自的值更新CollumnBla 表A.B
  • 对TableA.ColumnC中的值使用另一条新记录重复此操作

在其他情况下,记录在a列和B列中有值,但在C列中没有值。在这种情况下,只需添加一条新记录,但它们应在清洗过程中显示出来。

您可以使用insert和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

你能描述一下TableB的结构吗?放弃这个模式,或者做一把小提琴怎么样?太棒了,谢谢Vasanth。我需要添加一点来获取所有字段,但我尝试了其他方法,效果很好。我已经开始想办法了,但没有这么容易。