2013-08-26 56 views
-1
!(((ISNULL(Phone))&&(ISNULL(WorkPhone))&&(ISNULL(OtherPhone)))&&(((ISNULL(Phone))|| 

((!ISNULL(Phone))&&(PhoneXPC==1)))&&(((ISNULL(WorkPhone))||((!ISNULL(WorkPhone))&& 

(WorkPhoneXPC==1)))&&(((ISNULL(OtherPhone))||((!ISNULL(OtherPhone))&&(OtherPhoneXPC==1))))) 

有沒有在這種情況下任何瑕疵誰能幫助我們......我們有6列參與這種情況下它包含三種類型的電話號碼和相應的三位XPC columns 每個記錄的電話號碼。SSIS的條件性拆分條件

我們允許把空值的電話號碼列,其各自XPC column也將是無效的。

因此,如果這些XPC列中的任何一個包含0,那麼這個人應該放在一個文件,如果這些XPC列的人不包含0,但可以包含空應放在另一個文件。

我使用的VisualStudio 2005

在此先感謝

+0

爲什麼要補充!在可能的地方? –

+0

這也是你[提問](http://stackoverflow.com/questions/18428258/conditional-split-over-the-data-coming-from-oledb)? – billinkc

回答

0

嘗試使用此!

{ 

(((ISNULL(Phone)=="TRUE")&&(ISNULL(WorkPhone)=="TRUE")&&(ISNULL(OtherPhone)=="TRUE"))&& 

(((ISNULL(Phone)=="TRUE")||((!ISNULL(Phone)=="TRUE")&&(PhoneXPC==1)))&& 

(((ISNULL(WorkPhone)=="TRUE")||((!ISNULL(WorkPhone)=="TRUE")&&(WorkPhoneXPC==1)))&& 

(((ISNULL(OtherPhone)=="TRUE")||((ISNULL(OtherPhone)=="TRUE")&&(OtherPhoneXPC==1))))) 


} 

讓我知道,如果它

Ashutosh說阿里亞

2

該化合物的條件是夠討厭讓我想用一個腳本組件代替:

screenshot of suggested data flow

的腳本組件(這裏是SCR_DetermineTarget)被配置爲一個同步轉換,它將一個TargetId列到數據流。以下條件分割邏輯變得簡單地將TargetId與您選擇的任何值進行比較。我選擇了用1來表示所有的XPC領域是零和2,表明至少一個XPC場是非零,但所有的電話號碼是空。

下面的代碼(在VB,因爲你指定的VS 2005)設置TargetId適當:

Public Overrides Sub MyInput_ProcessInputRow(ByVal Row As MyInputBuffer) 
    Dim targetId As Integer 
    targetId = 0 

    If Row.PhoneXPC = 0 Or Row.WorkPhoneXPC = 0 Or Row.OtherPhoneXPC = 0 Then 
     targetId = 1 
    ElseIf Row.Phone_IsNull Or Row.WorkPhone_IsNull Or Row.OtherPhone_IsNull Then 
     targetId = 2 
    End If 

    Row.TargetId = targetId 
End Sub 

如果邏輯不是是你所尋找的,它應該是更容易修復它在VB.NET中比在有條件轉換的情況下,僅在可讀性的基礎上。

+0

謝謝埃德蒙施韋普:-)這個解決方案是沒什麼太大的幫助:-) – chetu

+0

不客氣!如果您認爲這是問題的最佳答案,那麼您應該[接受答案](http://stackoverflow.com/help/someone-answers)。 –