DataStage中的嵌套If-Then-Else用法

Nested If-Then-Else usage in DataStage

我正在尝试在DataStage的Transformation Stage中编写以下嵌套的If-Then-else语句,但它给了我编译错误。 有人可以告诉我还有其他方法吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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'
)


假设DECISION_RESULT是某种整数,则可以写入最后一个块:

1
2
If DSLink16.DECISION_RESULT = 3 Or DSLink16.DECISION_RESULT = 5
Then"ALOW" Else"DENY"

似乎每个If应具有与其关联的相应Else块。 以下对我有用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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'                )