Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SSIS进行数据转换_Sql Server_Ssis_Expression_Etl - Fatal编程技术网

Sql server 使用SSIS进行数据转换

Sql server 使用SSIS进行数据转换,sql-server,ssis,expression,etl,Sql Server,Ssis,Expression,Etl,我有一个很好的表达方式 ISNULL(LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "") ? "0" : (LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "") ISNULL(最近

我有一个很好的表达方式

ISNULL(LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "") ? "0"
: (LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "")
ISNULL(最近<0?(DT_WSTR,30)原始交易金额:“”)?"0"
:(最近<0?(DT_WSTR,30)原始交易金额:“”)
问题是原始TransactionAmount是十进制的,我希望整个表达式是十进制的。LateDats是(DT_14)整数。当我尝试替换DT_WSTR时,它会给我一个错误。有没有关于我怎样才能把它变成十进制的线索

我在报告中使用这些数据,这让我感到很困难,因为报告工具将其作为文本进行读取。

将其分解为几部分:

isnull(LateDays) ? (DT_NUMERIC,18,2) 0 :

LateDays < 0 ? (DT_NUMERIC,18,2) OriginalTransactionAmount : (DT_NUMERIC,18,2) 0
isnull(最近)?(DT_数值,18,2)0:
晚些时候<0?(DT_数字,18,2)原始交易金额:(DT_数字,18,2)0
LateDays位于布尔值部分,不是结果。所有结果必须是相同的数据类型。

问题 问题原因是使用
时:条件运算符,false和true结果必须具有相同的数据类型。那么当使用
LateDays<0时?(DT\u NUMERIC,18,2)OriginalTransactionAmount:“
有一个十进制结果和一个字符串结果,您可以使用以下表达式来代替此*(用
NULL(DT\u NUMERIC)替换

我将
替换为
“0”
。然后添加了一个数据转换任务,并将其更改为十进制,它就可以工作了

ISNULL(LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "0") ? "0" 
: (LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "0")
ISNULL(最近<0?(DT_WSTR,30)原始交易金额:“0”)?“0”
:(最近<0?(DT_WSTR,30)原始交易金额:“0”)

当您在每个LateDays实例前面放置(DT_DECIMAL,2)时会发生什么?如果我在不将“”更改为简单的0的情况下放置DECIMAL,则会出现错误,因为将“”作为字符串。您必须接受此答案,即使它是您的答案。此外,如果其他答案有帮助,最好向上投票。
(REPLACENULL(LateDays,0) < 0) ? (DT_NUMERIC,18,2)OriginalTransactionAmount : (DT_NUMERIC,18,2) 0
ISNULL(LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "0") ? "0" 
: (LateDays < 0 ? (DT_WSTR,30)OriginalTransactionAmount : "0")