Working in SQL Server 2008. My first stab at an SSIS script and I need to emulate some if/then conditional logic written in VB.net. I couldn’t find any previous questions dealing with nested conditions in expressions and believe I’m following what I’ve been able to uncover via google on nested conditions in a derived column.
I’m receiving an error while attempting to use nested conditions in the derived column transformation editor. The error I’m receiving indicates that SSIS could not parse my expression. The actual exception: “Exception from HRESULT: 0xC0204006 (Microsoft.SqlServer.DTSPipelineWrap)”
Questions for which the answers might immediately answer my question (and create a new problem):
- is there a nesting levels limit?
- can nesting be performed in the condition1 portion of [expression] ? [condition1] : [condition2]
I’ll give two snippets, the first is what I’m actually inserting, the second is a more reader-friendly version. Hopefully someone can point out my error.
Not sure that it has bearing, but please note that [BusArea] is a column derived in a previous step.
actual expression:
[BusArea] == "CCC" || [BusArea] == "NBU" || [BusArea] == "CA" ? (ISNULL([CASE_MORG]) or TRIM([CASE_MORG]) == "" ? ( ISNULL([TRX_MORG]) or TRIM([TRX_MORG]) == "" ? NULL(DT_WSTR,50) : [TRX_MORG]) : [CASE_MORG]) : (ISNULL([CASE_AGT]) or TRIM([CASE_AGT]) == "" ? ( ISNULL([TRX_AGT]) or TRIM([TRX_AGT]) == "" ? NULL(DT_WSTR,50) : [TRX_AGT]) : [CASE_AGT])
formatted for easier reading:
[BusArea] == "CCC" || [BusArea] == "NBU" || [BusArea] == "CA" ?
(ISNULL([CASE_MORG]) or TRIM([CASE_MORG]) == "" ?
( ISNULL([TRX_MORG]) or TRIM([TRX_MORG]) == "" ?
NULL(DT_WSTR,50)
: [TRX_MORG]
)
: [CASE_MORG]
)
: (ISNULL([CASE_AGT]) or TRIM([CASE_AGT]) == "" ?
( ISNULL([TRX_AGT]) or TRIM([TRX_AGT]) == "" ?
NULL(DT_WSTR,50)
: [TRX_AGT]
)
: [CASE_AGT]
)
I don’t think there is any limit with nesting conditions. Even if there is one, I don’t think we will reach the limit in the packages that we create handle our business processes.
You almost got everything correct. The issue with your conditional statement is that you have used
orinstead of||I copied your exact statement and pasted in
Derived Transformationwithin aData Flow taskand got an error because the package couldn’t parse the expression. I replaced all theor'swith correct Logical OR (||) operator and the expression evaluated correctly.