2014-03-31 99 views
0

我正在將一組數據導入OLE DB SQL SERVER。我有兩列:SSIS條件拆分

ID CONDITION CLIENT 
1 A11111  G12345 
1 X11111  G23456 
2 A11111  G12345 
2 A11111  G12345 
3 A11111  G12345 
3 A11111  G23456 
4 X11111  G12345 

我必須刪除重複項並上傳轉換表。如果condition列重複值具有相同的值,則將其取入,如果它們不同則取較小值。與client列相同。我把它帶到SQL服務器中的臨時表中,使用條件拆分在兩個條件上使用rank==1進行排序過濾。每件事情都運行良好,但是對於有條件列的這兩個記錄採用了默認值,但該記錄應該流過管道,因爲客戶等級爲1。有什麼建議來解決這個問題嗎?

+0

不知道我是否理解這個問題,能否請您提供一個錯誤的和期望的輸出示例? – Jayvee

+0

例如,在兩列上排名後的兩條記錄看起來像ID條件客戶端RankOnCondition RankOnClient 1 A11111 G42345 1 2 1 X11111 G23456 2 1當我通過使用等級的條件分割傳遞此記錄時,此記錄將變爲默認值,因爲即使它通過一個將條件拆分排在其他拆分的默認位置。任何可能的解決方案,這將記錄到數據庫 –

回答

0

刪除重複項的最簡單方法是在select語句中使用GROUP BY或DISTINCT子句。

或者,如果您正在查找最新值,則按UpdateDate排序的由ID分組的row_number()語句?降。每個id的row_number的結果將使您能夠僅選擇那些每個id具有1的row_number的行。 For a similar Row_Number example have a look at this

0

你的第一個條件應該有2個輸出:正數,當rank == 1時,應該輸出到UNION ALL變換,默認輸出到第二個條件。 第二個條件也應該輸出rank == 1到UNION ALL轉換。

UNION ALL的輸出將有任何一個或其他條件通過的行。