2017-10-04 189 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

除非您像我一样添加示例数据,否则您的问题对我来说是不透明的。你能否至少澄清一下:你有多少桌子在更新?只有一张桌子还是很多不同的桌子? –