列组中的总和报告项目(SSRS 2008)

时间:2012-07-19 13:52:55

标签: sql-server reporting-services

我在SSRS 2008(R2)报告中有以下工资表:

Payroll Table

数据集返回由以下字段组成的人工交易:

STARTDATE
STARTTIME
FINISHDATE
FINISHTIME
REGULARHRS (difference between finish and start)
REFWO (such as "Travel", "Holiday", "Work", etc and is used to sort into the categories shown in the table above)
TIMEWORKED (0/1 flag that indicates whether or not it counts towards "Time Worked" category)

我在STARTDATE上创建了一个列,以便显示一周中的每一天(我们的周数从周一到周日)。在“每日列”和“每周”(总计)列中,“无薪休假”的所有内容都是一个简单的表达式(通常只有Sum(IIF(something,A,B)格式)。在“临时常规”框中(对于日期分组),我有以下表达式:

=IIF(Weekday(Fields!startdate.Value)=1 
     OR Weekday(Fields!startdate.Value)=7 
     OR ReportItems!Holiday.Value>0,
    0,
    ReportItems!TimeWorked.Value-ReportItems!Holiday.Value-ReportItems!Bereave.Value)

基本上我正在做的是:如果STARTDATE是星期六,星期日或假日,那么正常时间将为0,因为它将落入OT1.5(加班,时间和一半),否则我计算通过从工作时间减去假期时间和丧亲时间来定时工作(因为两者都包含在时间工作的一部分中)。这部分效果很好!!但是当我尝试使用=Sum(ReportItems!InterimRegularDaily.Value)总结一周的总数时,它告诉我我不能在报表项上使用聚合,并且聚合函数只能用于页眉和页脚中包含的报表项。我已经做了大量的谷歌搜索,看看是否有解决方案,但一切似乎都涉及编写自定义函数。我简直难以简单地总结一个外部小组的小组计算!

非常感谢任何和所有帮助!!

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在Sum()表达式中添加范围,以尊重整个数据集或整个数据集:

'Returns the sum of the whole DataSet
=Sum(Fields!TestField.Value, "YourDataSetName")

'Returns the sum of a group
=Sum(Fields!TestField.Value, "YourGroupName")

您还可以堆叠它们:

=Sum(Sum(Fields!TestField.Value, "Level3GroupName"), "Level2GroupName")