2013-08-26 52 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)。 –