SSIS的条件性拆分条件
!(((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
在此先感谢
尝试使用此!
{
(((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说阿里亚
该化合物的条件是够讨厌让我想用一个脚本组件代替:
的脚本组件(这里是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中比在有条件转换的情况下,仅在可读性的基础上。
谢谢埃德蒙施韦普:-)这个解决方案是没什么太大的帮助:-) – chetu
不客气!如果您认为这是问题的最佳答案,那么您应该[接受答案](http://stackoverflow.com/help/someone-answers)。 –
为什么要补充!在可能的地方? –
这也是你[提问](http://stackoverflow.com/questions/18428258/conditional-split-over-the-data-coming-from-oledb)? – billinkc