使用重复数据聚合分组数据

时间:2015-09-23 21:35:53

标签: sql-server sql-server-2012 aggregate-functions aggregate ssrs-2012

我试图找出如何汇总一个人工作的小时数,这些小时数由他们拥有的每个边缘代码重复。

数据看起来像这样

Company Code Employee Code   Employee Name   Hours   Fringe Code Fringe Amount 
030          12345           Joe Blow        8       VAC             10.00
030          12345           Joe Blow        8       DUE              5.00
030          12345           Joe Blow        8       INTDUE           2.00
030          54698           Alan Low        8       VAC             10.00
030          54698           Alan Low        8       DUE              5.00
030          54698           Alan Low        8       INTDUE           2.00


现在总小时数应为16.在报告中,我将以下字段分为公司代码,员工代码,员工姓名,小时,以便它们只出现一次(不知道如何显示)。

我尝试了以下

Sum(FIRST(Fields!Hours.Value, "Employee_Name") , "Company_Code") 

但是我收到一个错误,说该值在外部聚合中使用了第一个聚合,并且不能将它们指定为嵌套聚合。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定你想要什么,所以我猜一个可能的结果场景。

我已经复制了提供输入表。

enter image description here

使用此Tablix数据设置:

enter image description here

将此代码添加到报告中。此函数将标记必须求和的行。

Dim groups As System.Collections.Hashtable

Function MyFunc(ByVal group As Object) As integer
dim flag as integer
        If (groups Is Nothing) Then
            groups = New System.Collections.Hashtable
        End If
        If (Not groups.Contains(group)) Then
                flag = 1
                groups.Add(group, nothing) 
        else
                flag = 0  
        End If

            MyFunc = flag

End Function

这个表达式在tablix文本框中你想要总和。

=sum(val(iif(Code.MyFunc(Fields!Employee_Code.Value) = 1, Fields!Hours.Value, 0)))

您将获得此预览

enter image description here

如果这有用,请告诉我。

答案 1 :(得分:0)

我有一些上述建议的问题,但我想出了如何解决问题。

我使用了以下等式:

= SUM(MAX(Fields!Regular_Hours.Value,“Employee_Code”,“Company_Code”)

因此,我使用MAX函数在每个Employee Code中只出现一次,然后在Company Code分组中对该次事件求和。

感谢你们的帮助!