SSRS总和(distinct())等价物

时间:2010-03-29 16:09:08

标签: sql-server reporting-services ssrs-2008 business-intelligence

我目前正在处理SSRS 2008报告,该报告返回类似于以下内容的数据集:

Job# ClientId MoneyIn MoneyOut
------------------------------

1    ABC123    10      25
1    ABC123    10      25
1    ABC123    5       25
2    XYZ123    25      50
2    XYZ123    25      50
3    XYZ123    15      15

如果作业已正确平衡,MoneyOut应等于作业MoneyIn的总量。

我遇到的问题是在SSRS的Tablix中显示这个问题时,我可以通过将字段设置为MoneyOut来为作业返回正确的=first(Fields!MoneyOut.Value)值,但我还需要求和这些值的日期和尝试=sum(first(Fields!MoneyOut.Value))会产生关于嵌套聚合函数的错误。

我还尝试使用类似=sum(ReportItems!MoneyOut1.Value)之类的内容来对文本框的值求和,这会产生错误,您只能在页眉或页脚中的报表项上使用聚合。

所以我的问题是,是否有某种方法可以在SSRS报告中复制distinct()的功能,或者是否有某种方法可以总结我不知道的文本字段的值?

3 个答案:

答案 0 :(得分:3)

为什么在SQL Server中使用它时需要等效的SUM(DISTINCT ...)函数?

听起来您需要更改向报表提供数据的查询,而不是尝试在报表中执行此操作。

答案 1 :(得分:1)

如果我真的理解了您的问题,您必须使用组对数据进行分组,并在每个组中汇总您喜欢的数据。

答案 2 :(得分:0)

用以下内容替换“ MoneyOut”字段:

CASE 
    WHEN ROW_NUMBER() OVER (PARTITION BY MoneyOut ORDER BY ClientId) = 1
    THEN MoneyOut
    ELSE NULL
    END AS MoneyOut