将SSIS转换更改为SQL查询

将SSIS转换更改为SQL查询,sql,ssis,Sql,Ssis,我想将下面SSIS包中的transformer更改为SQL查询: (TYPTRF==“O”?(NUMCPT_ORD==“4000328702”?“005000DY”:(ISNULL(NUMCLI_ORD);:NUMCLI_ORD)):(NUMCPT_BEN==“4000328702”?(ISNULL(NUMCLI_BEN_BAN);:NUMCLI_BEN BAN:(ISNULL(NUMCLI_BEN);:NUMCLI BEN) 请帮帮我。我是SSIS的新手 谢谢。你需要很多案例陈述 试试这个 s

我想将下面SSIS包中的transformer更改为SQL查询:

(TYPTRF==“O”?(NUMCPT_ORD==“4000328702”?“005000DY”:(ISNULL(NUMCLI_ORD);:NUMCLI_ORD)):(NUMCPT_BEN==“4000328702”?(ISNULL(NUMCLI_BEN_BAN);:NUMCLI_BEN BAN:(ISNULL(NUMCLI_BEN);:NUMCLI BEN)

请帮帮我。我是SSIS的新手


谢谢。

你需要很多案例陈述

试试这个

select case when TYPTRF='O' then NUMCPT_ORD='4000328702' else '005000DY' end,
       case when ISNULL(NUMCLI_ORD)='' then 'NUMCLI_ORD' else end,
       case when NUMCPT_BEN ='4000328702' then '' else NUMCLI_BEN_BAN end,
       case when (ISNULL(NUMCLI_BEN)=''  then '' else NUMCLI_BEN end
SQL案例

CASE WHEN TYPTRF = 'O'
THEN CASE WHEN NUMCPT_ORD = '4000328702'
          THEN '005000DY'
          ELSE CASE WHEN NUMCLI_ORD is null
                    THEN ''
                    ELSE NUMCLI_ORD END
            END
ELSE CASE WHEN NUMCPT_BEN = '4000328702'
          THEN CASE WHEN NUMCLI_BEN_BAN is null
                    THEN ''
                    ELSE NUMCLI_BEN_BAN END
          ELSE CASE WHEN NUMCLI_BEN is null
                    THEN ''
                    ELSE NUMCLI_BEN END
          END       
END
已编辑(MS SQL):

就像加雷斯说的,你可以做这样的事情:

CASE WHEN TYPTRF = 'O'
THEN CASE WHEN NUMCPT_ORD = '4000328702'
          THEN '005000DY'
          ELSE isnull(NUMCLI_ORD, '')
          END  WHEN NUMCPT_BEN = '4000328702'
               THEN isnull(NUMCLI_BEN_BAN,'')
               ELSE isnull(NUMCLI_BEN,'')
               END     

+1因为它是正确的,但是它比需要的要详细得多。当NUMCLI\u BEN为null时,CASE“ELSE NUMCLI\u BEN END,可以更改为
COALESCE(NUMCLI\u BEN)”,
(或者
为null(NUMCLI\u BEN)”,
,如果是SQL Server,则不需要在[expression]时嵌套CASE语句-
CASE[expression2]时的[result]ELSE CASE然后[result2]ELSE[result3]END
可以简化为[expression]时的[result]ELSE CASE然后[expression2]时的[result2]ELSE[result3]END
CASE WHEN TYPTRF = 'O'
THEN CASE WHEN NUMCPT_ORD = '4000328702'
          THEN '005000DY'
          ELSE isnull(NUMCLI_ORD, '')
          END  WHEN NUMCPT_BEN = '4000328702'
               THEN isnull(NUMCLI_BEN_BAN,'')
               ELSE isnull(NUMCLI_BEN,'')
               END