Evaluate int表达式中的Decimal中的变量值

时间:2014-01-23 20:16:40

标签: ssis

我在SSIS中有一个场景,我在rowcount转换中使用@BadRecordCount计算错误记录,在rowcount转换中使用@TotalRecordCount来计算总记录。我需要计算ErrorPercentage。为此,我声明了另一个变量@ErrorPercentage并使用了表达式 - @ [User :: RowCountBad] * 100 / @ [User :: TotalRecordsCount]

表达式正在评估罚款但不给出小数值。

我尝试将我的变量数据类型更改为 double ,但它仍然将其评估为整数。

我尝试将变量值更改为字符串,它会抛出一个错误,说明在指定的数据类型中不允许使用“*”,这意味着我无法在表达式中进行乘法运算。

最后,我尝试将@BadRecordCount和@TotalRecordCount变量数据类型与@ErrorPercentage一起更改为double。现在,它正在用十进制进行评估,这是我想要的,但是当我运行包时,它无法将@BadRecordCount和TotalRecordCount更改为INT,因为rowcount转换正在使用它们。

我想要例如:

@ [User :: RowCountBad] = 10000和@ [User :: TotalRecordsCount] = 143000然后作为计算它给我6.993006993006993。

根据上面的表达式它只给我6但我需要6.99(最多2位小数)。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

SSIS表达非常痛苦 - 没有隐含的转换。

我会尝试这样的事情:

(DT_NUMERIC,10,2)@ [User :: RowCountBad] *(DT_NUMERIC,10,2)100 /(DT_NUMERIC,10,2)@ [User :: TotalRecordsCount]