0

我已经搜索了所有内容并提出了一个空白。我正在尝试根据另一个表中的条件更新一条记录并在一个表中插入其他记录。两个表都有一个共同的 RecordID(一个 nvarchar,因为它们包含字符)。

最简单的英文解释:

  • 如果记录 ID1 在 TableA 的 ColumnA AND ColumnB AND ColumnC 中有值
  • 然后,在 TableB 中,使用 TableA.ColumnA 中的值更新 ColumnBla
  • 然后插入一条新记录,复制记录 ID1 中的所有字段,并将足够的“A”添加到 RecordID
  • 然后,在这个新记录中,使用 TableA.ColumnB 中的值更新 CollumnBla
  • 对 TableA.ColumnC 中的值重复另一条新记录

在其他情况下,记录在 ColumnA 和 ColumnB 中具有值,但在 ColumnC 等中没有值。在这种情况下,只需要添加一条新记录,但它们应该被淘汰。

4

1 回答 1

1

您可以通过使用带有选择查询的插入来将值插入到表中。

因此,您的场景的查询将如下所示。

     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
于 2013-07-29T15:10:04.350 回答