我正在使用 Visual Studio 2010 和 SQL Server 2012。
我搜索了网络和 stackoverflow 档案,发现其他一些人遇到了这个问题,但我无法让他们的解决方案为我工作。该问题涉及使用用户可定义的报告参数基于数据集的聚合值进行过滤。
我有以下报告。
该报告的最终目标是过滤具有用户可定义的现金百分比作为总资产百分比的投资组合。默认值为 30% 或更大。因此,例如,如果投资组合的总市值为 100,000 美元,其现金资产类别为 40,000 美元,这将是 40% 的现金百分比,并且该投资组合将出现在报告中。
我已经能够使用数据集本身的过滤器仅选择现金资产类别,因此这不是问题。我很容易地在数据集中添加了一个现金百分比参数,但很快意识到这是对行详细信息而不是汇总金额进行过滤,有时投资组合有多个现金账户。我需要所有现金账户的总和,这样我才能真正知道现金是否占总市值的 30% 或更大。
起初我认为报告工作正常。
但在将其与另一份报告进行交叉引用后,我意识到这个投资组合只有 2.66%的总现金,因为它在第二个现金账户中也有很大的负余额。这是我关心的所有现金账户的总和。
我想根据总行而不是详细行过滤具有 >= 现金的投资组合。我怀疑我可能需要使用标量函数 SUM() 更改数据集,然后建立一个参数,但我没有成功编写查询来做到这一点。我也很想知道这是否可以在 .rdl 层而不是在 sql 数据集级别完成。用于此的 SQL 有点复杂,因为它所报告的程序需要使用 SQL 函数、存储过程和参数。
如果解决方案涉及更改查询以在数据集本身中包含 sum(),我怀疑是第 20 行需要求和
a.PercentAssets,
这是报告的数据集。
https://www.dropbox.com/s/bafdo2i6pfvdkk4/CashPercentDataSet.sql
这是 .rdl 文件。
https://www.dropbox.com/s/htg09ypyh7f1a98/cashpercent2.rdl
谢谢