DataStage 中嵌套的 If-Then-Else 用法
Nested If-Then-Else usage in DataStage
我试图在 DataStage 的转换阶段编写以下嵌套的 If-Then-else 语句,但它给我编译错误。谁能告诉我还有其他方法吗?
If IsNotNull(DSLink16.DECISION_ID)
Then (
If DSLink16.DECISION_RESULT = 1 Then (
If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
Else If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
Else If DSLink16.DECISION_CODE = 'NOIS' Then 'NOIS'
)
Else If DSLink16.DECISION_RESULT = 2 Then 'DSMS'
Else If DSLink16.DECISION_RESULT = 3 Then (
If APPELANT_CODE = 'CLMT' Then 'ALOW' Else 'DENY'
)
Else If DSLink16.DECISION_RESULT = 4 Then (
If APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
)
Else If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
Else If DSLink16.DECISION_RESULT = 6 or DSLink16.DECISION_RESULT = 7 or DSLink16.DECISION_RESULT = 8 Then 'DENY'
)
Else (
If DSLink16.DECISION_RESULT = 1 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 2 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 3 Then 'ALOW'
Else If DSLink16.DECISION_RESULT = 4 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 5 Then 'ALOW'
Else If DSLink16.DECISION_RESULT = 6 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 7 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 8 Then 'DENY'
)
似乎每个 If 都应该有相应的 Else 块与之关联。以下对我有用:
If IsNotNull(DSLink16.DECISION_ID)
Then (
If DSLink16.DECISION_RESULT = 1 Then (
If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
ELSE If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
ELSE 'NOIS'
) ELSE If DSLink16.DECISION_RESULT = 2 Then 'DSMS' ELSE If DSLink16.DECISION_RESULT = 3 Then (
If DSLink16.APPELANT_CODE = 'CLMT' then 'ALOW' Else 'DENY'
) ELSE If DSLink16.DECISION_RESULT = 4 Then (
If DSLink16.APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
) ELSE If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
ELSE 'DENY'
)
Else (
If DSLink16.DECISION_RESULT = 1 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 2 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 3 Then 'ALOW'
ELSE If DSLink16.DECISION_RESULT = 4 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 5 Then 'ALOW'
ELSE If DSLink16.DECISION_RESULT = 6 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 7 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 8 Then 'DENY'
ELSE 'DENY' )
假设DECISION_RESULT
是某种整数,最后的块可以写成:
If DSLink16.DECISION_RESULT = 3 Or DSLink16.DECISION_RESULT = 5
Then "ALOW" Else "DENY"
我试图在 DataStage 的转换阶段编写以下嵌套的 If-Then-else 语句,但它给我编译错误。谁能告诉我还有其他方法吗?
If IsNotNull(DSLink16.DECISION_ID)
Then (
If DSLink16.DECISION_RESULT = 1 Then (
If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
Else If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
Else If DSLink16.DECISION_CODE = 'NOIS' Then 'NOIS'
)
Else If DSLink16.DECISION_RESULT = 2 Then 'DSMS'
Else If DSLink16.DECISION_RESULT = 3 Then (
If APPELANT_CODE = 'CLMT' Then 'ALOW' Else 'DENY'
)
Else If DSLink16.DECISION_RESULT = 4 Then (
If APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
)
Else If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
Else If DSLink16.DECISION_RESULT = 6 or DSLink16.DECISION_RESULT = 7 or DSLink16.DECISION_RESULT = 8 Then 'DENY'
)
Else (
If DSLink16.DECISION_RESULT = 1 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 2 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 3 Then 'ALOW'
Else If DSLink16.DECISION_RESULT = 4 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 5 Then 'ALOW'
Else If DSLink16.DECISION_RESULT = 6 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 7 Then 'DENY'
Else If DSLink16.DECISION_RESULT = 8 Then 'DENY'
)
似乎每个 If 都应该有相应的 Else 块与之关联。以下对我有用:
If IsNotNull(DSLink16.DECISION_ID)
Then (
If DSLink16.DECISION_RESULT = 1 Then (
If DSLink16.DECISION_CODE = 'ALOW' Then 'DENY'
ELSE If DSLink16.DECISION_CODE = 'DENY' Then 'ALOW'
ELSE 'NOIS'
) ELSE If DSLink16.DECISION_RESULT = 2 Then 'DSMS' ELSE If DSLink16.DECISION_RESULT = 3 Then (
If DSLink16.APPELANT_CODE = 'CLMT' then 'ALOW' Else 'DENY'
) ELSE If DSLink16.DECISION_RESULT = 4 Then (
If DSLink16.APPELANT_CODE = 'CLMT' Then 'DENY' Else 'ALOW'
) ELSE If DSLink16.DECISION_RESULT = 5 Then DSLink16.DECISION_CODE
ELSE 'DENY'
)
Else (
If DSLink16.DECISION_RESULT = 1 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 2 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 3 Then 'ALOW'
ELSE If DSLink16.DECISION_RESULT = 4 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 5 Then 'ALOW'
ELSE If DSLink16.DECISION_RESULT = 6 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 7 Then 'DENY'
ELSE If DSLink16.DECISION_RESULT = 8 Then 'DENY'
ELSE 'DENY' )
假设DECISION_RESULT
是某种整数,最后的块可以写成:
If DSLink16.DECISION_RESULT = 3 Or DSLink16.DECISION_RESULT = 5
Then "ALOW" Else "DENY"