【问题标题】:SSRS Summing Distinct Values of Specific GroupSSRS 对特定组的不同值求和
【发布时间】:2015-09-21 14:50:39
【问题描述】:

在 SSRS 中,有 2 个组和 1 个详细信息行,我试图合计每个组的不同值。

第 1 组 = 1 所学校

第 2 组 = 5 名学生

详细信息 = 5 名学生每人上 4 节课

字段 1 = 学生姓名

字段 2 = 以前学习的课程数量(使用数字 2、4、6、8、10)

字段 3 = 当前时间表的课程名称(ELA、数学、科学、社会研究)

我的数据集有 20 行,代表 5 名学生每人参加 4 节课。 在报告中,详细信息行中没有总计。 在学生组行中,当我只提取之前学习过的课程的值(而不是总和)时,它在列中正确显示为 2,4,6,8,10 取决于学生,当然,因为它是部分按表达式分组。

这就是我们要解决的问题。当第 1 组在之前修读的课程列中总计时,总数是我预期值的 4 倍。据推测,该报告汇总了所有 20 个条目,而不是按不同的学生价值对它们进行分组。

报告显示应该是 1 行显示学校,5 个子行显示学校下方的学生和以前学习的课程数量,最后每个学生下方的 4 个子行显示课程名称。

我知道不同的计数功能无济于事,因为需要对值进行总计而不计算在内。我尝试了 Sum(Fields!prevCount.Value,"GroupBystudent" 但这也不起作用。我尝试引用 ReportItems!Textbox.Value 并且我收到一个错误,说它需要在页眉或页脚中完成。

这甚至可以做到吗?如果是这样,你能帮我表达一下吗? 非常感谢。

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    我遇到了类似的问题,但很遗憾,无法通过表达式来解决。

    我用一些 VB 代码来为我总结独特的检查。它认为它会像现在一样为您工作。

    这是 SSRS 代码部分(报告属性->代码选项卡)中的 VB:

    Private Checks As String
    
    Function AddChecks(ByVal items As Object()) AS DECIMAL
    
    Dim CheckCheck as String 
    Dim Amount as Decimal
    
    If items Is Nothing Then
    Return Nothing
    End If
    
    For Each item As Object In items
    
        CheckCheck = Left(item, InStr(item, "|"))
        Amount = Val(Mid(item, InStr(item, "|") + 1, LEN(item)))
    
        If InStr(Checks, CheckCheck) = 0 THEN
            Checks = Checks & CheckCheck
            AddChecks = AddChecks + Amount 
        End If
    Next
    
    End Function
    

    将此代码粘贴到您的报告代码部分。

    对于你的表达,你会使用

    =CODE.AddChecks(LookUpSet(1, 1, Fields!StudentName.Value & "|" & Fields!NumberOfCourses.Value, "Finance"))
    

    【讨论】:

    • 谢谢汉诺威。我需要稍微调整一下。我希望这不会太难。我又添加了一个组:等级。所以我们去:学校,年级,学生,课程。当我将自定义函数/代码添加到成绩组行上的表达式时,总数为零。当我将它添加到学校组行时,我得到的“1”比我应该得到的少。我应该在某个地方添加一个额外的 1 吗?
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2015-04-07
    • 2018-07-04
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多