我正在寻求协助在SSRS中创建一个减去SUMS的VB表达式。我有一个数据集,其中包含帐户和相应的金额/金额值。我需要帮助创建一个表达式,该表达式汇总指定范围内一组帐户的金额/金额值,然后从另一个范围的金额/金额总计中减去它。具体做法是:
(Sum(amt) where acct between 40000 and 49999) -
(Sum(amt) where (acct between 50000 and 59999) or (acct between 66000 and 69999)) -
(Sum(amt) where acct between 76000 and 79825) -
(Sum(amt) where acct between 89000 and 90399)
真的需要帮助将此SQL逻辑转换为VB表达式,以用于SSRS中的文本框。任何建议都会非常有帮助!谢谢!
答案 0 :(得分:1)
文本框只能捕获数据集的第一个值,因此,如果转到文本框的表达式构建器,则可以看到数据集中没有可用的字段。但是,可以使用数据集字段上的聚合函数。
因此,您可以为数据集创建计算字段,并使用适当的符号向其添加金额值,以便此计算字段中所有值的总和代表您所需的解决方案。
例如,向数据集添加新的计算字段。在字段源中,添加适当的表达式,如:
=IIF(Fields!acct.Value>=40000 AND Fields!acct.Value<=49999, CInt(Fields!amt.Value),
IIF( (Fields!acct.Value>=50000 AND Fields!acct.Value<=59999) OR
(Fields!acct.Value>=66000 AND Fields!acct.Value<=69999) OR
(Fields!acct.Value>=76000 AND Fields!acct.Value<=79825) OR
(Fields!acct.Value>=89000 AND Fields!acct.Value<=90399),
CInt(0 - Fields!amt.Value), CInt(0)
)
)
这样可以保持40000到49999之间的值。使所有需要的值减去负值。而你不希望将其他所有内容视为0。
因此,当您致电
时Sum(Fields!calcfield.Value, "your dataset name")
从文本框中添加40000到49999之间的值,并减去所需范围内的值。
请根据需要更改计算字段的表达式,该过程将起作用。 您不应直接从文本框中浏览数据集中的所有值。
希望它有所帮助。