2017-10-04 191 views
0

我正在處理數據清理項目,我正在執行第1個存儲過程以獲取所有有問題的數據並將其存儲到具有ID,IND_REF,CODE的臨時表1中。需要幫助來更新SSIS中foreach循環的記錄

表的結構是:

ID | IND_REF|CODE 
12 | 2333 |ABC 
13 | 1222 |EFG 

現在提供IND_ref相關聯的每個代碼是表2和表電子郵件,其中數據將被更新的主鍵。

接下來,我又寫了存儲過程與IF聲明指出,

  • 如果代碼= ABC然後更新學校電子郵件作爲主要的電子郵件,其中emailtable_ID =臨時表IND_REF

一旦更新所有的一排電子郵件表通過參考臨時表IND_REF我用另一個if語句,

  • IF code ='EFG'do that .... wh ERE table2_ID =臨時表IND_REF ...

等..

基本上我想引用與每個IND_REF相關的代碼更新直播表的行...

我可以用SSIS包實現這一點?我可以循環訪問臨時表來更新實時表嗎?任何幫助將非常感激。我對SQL世界很陌生,所以我發現很難通過設置計數器來更新實時表來遍歷每條記錄。任何腳本的幫助將是非常有幫助的。

+0

你爲什麼要改變表格?你不改變列。所有你需要的是_one_ update語句來完成所有這些。你不需要遊標或循環 –

+0

非常感謝。我唯一擔心的是我已經捕獲了所有問題記錄的帳戶ID,並用代碼存儲了每個問題。例如ID 123,444,333,22,11,1111,全部都有不正確的組織名稱,它保存在代碼爲'ILOL'的臨時表中。現在在update語句中,如果代碼= ILOL,則引用它,然後更新org表,其中ID =登臺表ind_ref。我如何通過ssis包循環臨時表來執行此更新 – Biswa

回答

0

我不明白你的問題,但讓我告訴你一個例子:

如果我們有這樣的一個表:

TABLE1 
ID ind_ref code 
1  1  ABC 
2  15  DEF 
3  17  GHI 

和表像這樣:

TABLE2 
ind_ref2 code 
1   ZZZ 
2   XXX 
3   DDD 
4   ZZZ 
5   XXX 
15  FFF 
17  GGG 

然後,如果我們運行此查詢:

UPDATE TABLE2 
SET Code = TABLE1.Code 
FROM TABLE1 
WHERE TABLE1.ind_ref = TABLE2.ind_ref2; 

表2最終會是這樣的:

TABLE2 
ind_ref2 code 
1   ABC <= I got updated 
2   XXX 
3   DDD 
4   ZZZ 
5   XXX 
15  DEF <= me too 
17  GHI <= and me 

如果這不是您的數據或要求,請花時間來鋪陳的例子,因爲我有:解釋,你有,你想要什麼樣的數據看起來像。

注意:這裏不需要SSIS,也不是循環。

+0

嗨,尼克謝謝你的回答,你幾乎讓我..我會回來給你正確的解釋 – Biswa

+0

我已經更新我的問題。希望它能幫助你理解我在努力實現尼克。非常感謝。 – Biswa

+0

除非您像我一樣添加示例數據,否則您的問題對我來說是不透明的。你能否至少澄清一下:你有多少桌子在更新?只有一張桌子還是很多不同的桌子? –