数字之间的SSRS表达式和

时间:2012-09-02 21:37:29

标签: sql vb.net expression reporting-services

我正在寻求协助在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中的文本框。任何建议都会非常有帮助!谢谢!

1 个答案:

答案 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之间的值,并减去所需范围内的值。

请根据需要更改计算字段的表达式,该过程将起作用。 您不应直接从文本框中浏览数据集中的所有值。

希望它有所帮助。