2016-07-28 43 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