2013-07-29 205 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。我需要添加一點來獲取所有的字段,但否則我嘗試了它,它的工作原理。我一直在想辦法,但這並不容易。 –

相關問題