将SSIS转换更改为SQL查询
我想将下面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的新手将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
谢谢。你需要很多案例陈述 试试这个
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