2010-04-09 65 views
1

我有一個SSIS包,它將數據從表A複製到表B,並在表A中設置一個標誌,以便隨後不會複製相同的數據。SSIS - 從多個表中選擇行的更新標誌

update transfer 
set ProcessDateTimeStamp = GetDate(), LastUpdatedBy = 'legacy processed' 
output inserted.* 
where LastUpdatedBy = 'legacy' 
and ProcessDateTimeStamp is not null 

我的問題是,我需要運行一個類似的數據副本,但有兩個來源表,加入了對主:這通過以下的ADO淨源對象的SQL命令文本的偉大工程/外鍵 - 從表中選擇A表中的連接表B更新標誌。

我不認爲我可以使用上面的技術,因爲我不知道我會把連接放在哪裏!

是否有解決此問題的另一種方法?

謝謝

Rob。

回答

1

您可以在更新語句中使用聯接。

update m 
set ProcessDateTimeStamp = GetDate(), 
    LastUpdatedBy = 'legacy processed', 
    somefield = t.someotherfield 
    output inserted.* 
from transfer t 
join mytable m 
    on t.id = m.id 
where m.LastUpdatedBy = 'legacy' 
    and m.ProcessDateTimeStamp is null 
    and t.ProcessDateTimeStamp is not null 

關鍵是不要別名在集合左側的字段,而是別名的別名。在更新關鍵字之後使用表別名作爲更新的表,以便知道要更新哪個連接表。

+0

棒極了!謝謝 – 2010-04-13 09:50:33