Выражение столбца, полученное в SSIS из кода SQL CASE..WHEN

Я пытался преобразовать следующий код SQL с CASE - WHEN в выражение производного столбца SSIS. Выражение будет помещено в новый столбец с типом данных varchar (5).

Код SQL:

CASE
WHEN SUBSTRING(A.Column1,1,5) = 'John'
    OR 
    (C.Column1 IS NOT NULL
    AND A.Column2 = 'Two')
        THEN 'Two'  
WHEN SUBSTRING(A.Column1,1,5) = 'Mike'  
        THEN 'HD' 
WHEN D.Column1 IS NOT NULL
    AND F.Column1 IS NOT NULL
    AND G.Column1 LIKE '%DDD%'
    AND G.Column2 = H.Column1 
    AND H.Column2 = '1'
    AND H.Column3 = 'Y'
    AND H.Column4 <= A.Column3
    AND H.Column5 > A.Column3
    AND H.Column6 <= A.Column3
        THEN 'HE'  
WHEN B.Column1 IS NOT NULL
        THEN '' 
WHEN E.Column1 IS NOT NULL 
        THEN '22' 
ELSE ''

Выражение у меня есть:

SUBSTRING([A.Column1],1,5) == "John" 
|| (ISNULL([C.Column1]) == FALSE 
&& ([A.Column2] == "Two") ? "Two":

(SUBSTRING([A.Column1],1,5) == "Mike" ? "HD":
(ISNULL([D.Column1]) == FALSE
    && ISNULL([F.Column1]) == FALSE
    && FINDSTRING([G.Column1], "DDD",1) > 0
    && [G.Column2] ==[H.Column1] 
    && [H.Column2] == "1"
    && [H.Column3] == "Y"
    && [H.Column4] <= A.Column3
    && [H.Column5] > A.Column3
    && [H.Column6] <= A.Column3 ? "HE":
(ISNULL([B.Column1]) == FALSE ? "":
(ISNULL([E.Column1]) == FALSE ? "22":""
))))

Я новичок в построении выражений лица и не мог понять, где я ошибаюсь. Я не могу загрузить программу Expression Tester, потому что не могу запустить .exe на рабочем компьютере. Любая помощь очень ценится.


person Meta747    schedule 10.07.2014    source источник


Ответы (1)


Перед ? «Два»:

Попробуй это:

SUBSTRING([A.Column1],1,5) == "John" 
|| (ISNULL([C.Column1]) == FALSE 
&& ([A.Column2] == "Two")) ? "Two":    
(SUBSTRING([A.Column1],1,5) == "Mike" ? "HD":
(ISNULL([D.Column1]) == FALSE
    && ISNULL([F.Column1]) == FALSE
    && FINDSTRING([G.Column1], "DDD",1) > 0
    && [G.Column2] ==[H.Column1] 
    && [H.Column2] == "1"
    && [H.Column3] == "Y"
    && [H.Column4] <= A.Column3
    && [H.Column5] > A.Column3
    && [H.Column6] <= A.Column3 ? "HE":
(ISNULL([B.Column1]) == FALSE ? "":
(ISNULL([E.Column1]) == FALSE ? "22":""
))))
person Anup Agrawal    schedule 10.07.2014
comment
Спасибо, что поймали это! В остальном мой H.Column2 был числовым типом данных. Итак, мне также пришлось преобразовать тип данных как таковой: [H.Column2] == (DT_NUMERIC, 1, 0)1 - person Meta747; 10.07.2014