0

いろいろ検索して、空白にたどり着きました。別のテーブルの条件に応じて、1 つのレコードを更新し、別のテーブルに他のレコードを挿入しようとしています。両方のテーブルに共通の RecordID (文字が含まれているため、nvarchar) があります。

最も簡単に英語で説明:

  • レコード ID1 の値が、TableA の ColumnA AND ColumnB AND ColumnC にある場合
  • 次に、TableB で、TableA.ColumnA の値で ColumnBla を更新します。
  • 次に、新しいレコードを挿入し、レコード ID1 からすべてのフィールドをコピーし、RecordID にサフィックス「A」を追加します。
  • 次に、この新しいレコードで、ColumnBla を TableA.ColumnB の値で更新します。
  • TableA.ColumnC の値の別の新しいレコードで繰り返します

レコードが ColumnA AND ColumnB に値を持ち、ColumnC には値を持たないなどの他の条件があります。この場合、新しいレコードを 1 つだけ追加する必要がありますが、ウォッシュで出てくるはずです。

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 に答える