SSION外部查询中的UNION多个数据集

时间:2015-04-12 01:45:57

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

我有两个数据集,其中包含与我想要合并到一个数据集中的完全相同的字段。

我不能放置UNION / JOIN并让它在查询中返回一个数据集,因为所有数据都经过加密,并由SSRS中加载的程序集引用解密(所以我不能运行必要的WHERE' s除非我使用数据在SSRS中后过滤。

我可以使用Lookup / LookupSet返回第二个数据集但是我在条形图中使用这些数据,因此(不知何故)需要在其上显示两组数据。如果我使用Tablix,我将能够" hack"它通过在主tablix下放置第二个没有标题的Tablix并显示它。不幸的是,我不能这样做。

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

我想在SSRS中做些什么?似乎是如此基本但经过一周的尝试后我才放弃了!

1 个答案:

答案 0 :(得分:0)

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

我们假设您按月显示销售额。您的值字段为 SUM(字段!TotalSales.value),您的日期字段为字段!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

您的数据显然不同,但概念应该相同。