2016-07-28 279 views
0

我已经创建了一个SSIS包,用于从CSV文件读取数据并加载到表1中。其他数据流任务在表1上查找。表1具有列x,y,z,a,b。表2有列a,b,y,z查找是基于列y和z完成的。根据列y和z,它从表1中提取a和b并更新表2。问题是数据得到更新,但我得到多行数据这是一个没有更新和一个更新后。SSIS查找数据更新

如果需要,我可以提供更清晰的解释。

+0

请提供所需的帮助专家! – Ritu

+0

你绝对需要更清楚的解释。 '没有更新和一个更新'是什么意思?也许你应该学会做这在更新语句而不是在SSIS –

+0

“一个没有更新用和一个与更新用”摆弄的意思是指我有一个数据行EVENT_ID \t Model_Dsc \t Model_Cd \t Derivative_Cd \t VIN \t长度(cm)\t宽度(厘米)\t身高(cm) L405览胜\t \t T1 QVBW \t \t NULL NULL NULL \t \t NULL AFER更新用 - EVENT_ID \t \t Model_Dsc Model_Cd \t \t Derivative_Cd VIN \t长度(cm)\t宽(cm)\t身高(cm) L405览胜\t \t T1 QVBW \t \t NULL 5199 \t \t 2073 NULL理想我应该只得到1行,第二行。 – Ritu

回答

0

充实Nick的建议,我会摆脱你的第二个数据流(从表2到表2)。

在填充表1的第一个Dataflow后,只需执行一个EXECUTE SQL任务,该任务在表2上执行UPDATE,然后连接到表1以获取新数据。

编辑回应评论:

您需要使用WHERE子句将唯一匹配的行。显然Model_Cd不是JLRMODEL_DIMS中的唯一列。如果由于两个表之间的关系而无法使WHERE子句独一无二,那么您需要选择合计[Length (cm)],如MIN(),MAX()等,或者您需要使用TOP 1,以便您只从子查询中获得一行。

+0

UPDATE JLR_EVENTS SET [Length(cm)] =(SELECT [Length(cm)] FROM JLRMODEL_DIMS WHERE JLR_EVENTS.Model_Cd = JLRMODEL_DIMS.Model_Cd);查询问题..错误 - 错误:子查询返回多个值。当子查询遵循=,!=,<, <= , >,> =或当子查询用作表达式时,这是不允许的。 – Ritu

+0

请参阅我的答案中的编辑。 –

+0

谢谢,它与TOP1工作正常。我想知道为什么我不能这样做。无论如何,感谢您的帮助。真是一颗宝石! – Ritu