【问题标题】:UNION multiple datasets in SSRS outside queryUNION SSRS 外部查询中的多个数据集
【发布时间】:2015-04-12 01:45:57
【问题描述】:

我有两个具有完全相同字段的数据集,我想将它们合并到一个数据集中。

我无法放置 UNION/JOIN 并使其在查询中返回一个数据集,因为所有数据都已加密并由 SSRS 中加载的程序集引用解密(因此我无法运行必要的 WHERE,除非我在数据后使用过滤器在 SSRS 中)。

我可以使用 Lookup/LookupSet 返回第二个数据集,但是我在条形图中使用此数据,因此(不知何故)需要两组数据才能在其上显示。如果我使用的是 tablix,我可以通过在主 tablix 下方放置第二个不带标题的 tablix 来“破解”它,并像这样显示它。不幸的是,我不能这样做。

我还尝试将它作为一个数据集运行,返回所有值,然后根据图表中的类别组运行“过滤器”,但是无论出于何种原因 [SSRS 中的错误?] 这些过滤器过滤整个结果集,而不仅仅是一个类别组。

我在 SSRS 中尝试做的事情是否可行?看起来很基础,但经过一周的尝试后,我几乎放弃了!

【问题讨论】:

    标签: sql-server reporting-services ssrs-2012


    【解决方案1】:

    合并两个数据集是不可能的,但可能有一种方法可以通过对 LookUpSet 进行 SUM 来为您的图表目的伪造它。任何字段用作您的值都需要使用您的轴使用的任何标准进行查找。

    假设您按月显示销售额。您的值字段是 SUM(Fields!TotalSales.value),日期字段是 Fields!month.value。您想添加 dataset1 中的值并从 dataset2 中查找总数 - 例如:

    =Fields!TotalSales.value + Code.SumLookup( LookupSet(Fields!month.Value, Fields!month.Value, Fields!TotalSales.value, "Dataset2") )
    

    不幸的是,SSRS 不允许您对查找集求和(那么它的意义何在?),因此您必须使用自定义代码来完成。

    Function SumLookup(ByVal items As Object()) As Decimal
      If items Is Nothing Then
        Return Nothing
      End If
    
      Dim suma As Decimal = New Decimal()
      suma = 0
    
      For Each item As Object In items
        suma += Convert.ToDecimal(item)
      Next
    
      Return suma
    End Function
    

    盗自:How to combine aggregates within a group with aggregates across groups within SSRS

    你的数据明显不同,但概念应该是一样的。

    【讨论】:

    • 感谢您的帖子。我已经尝试过 SUM(并且实际上从同一个链接中获得了相同的代码 :))但是,继续上面的示例,在我的情况下,每个数据集都包含不同的月份。例如,数据集 1 具有 Jan、Feb 和 Mar(加上 JAn/Feb/Mar TotalSales),数据集 2 具有 Apr 和 Apr TotalSales。我需要显示一月、二月、三月和四月的条形图及其各自的 TotalSales。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2016-07-04
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多