在查询SSRS中没有数据时向报表添加值

时间:2015-10-22 13:23:12

标签: reporting-services ssrs-2008-r2 ssrs-expression

我有一个返回销售代表编号,类别,销售的查询。

结果是这样的:

enter image description here

有4个类别称为G1,G2,G3,G4

正如您所见,销售代表11每个类别售出10个(黄色行)。 但代表12仅针对类别G3G4销售。

我们的想法是在报告中显示所有类别,并在0中填充所有未在该特定类别上销售的人。

必须按销售代表进行分组,因此,如果您按销售代表进行Tablix分组,您将拥有以下内容:

enter image description here

但你想要这样的东西:

enter image description here

我可以用任何表达来添加这些吗?

到目前为止我所做的是创建一个组,当然这个组是我的销售代表并组合该列的单元格并为每个类别创建一个Row组,如下所示:

enter image description here

但是如果您执行该报告,它将重复所有类别G1,G2 ......对于该特定销售代表的每个类别都存在。

另一个问题是,您如何评估报告中的硬编码类别,如果您不能将Iif("G1" = Fields!Category.Value,Fields!Sales.Value,"0")G1Null进行比较,则您的数据源中不存在该类别IsNothing,您正在比较它的存在。

1 个答案:

答案 0 :(得分:3)

我认为您可以在查询级别使用T-SQL顺利实现这一目标。我不知道为什么你不使用最简单的方法来应用这种逻辑,因为在T-SQL中你可以使用几乎每个逻辑。

但是我喜欢这种挑战,所以我提出了这个可能的解决方案。

这是我的样本数据集:

enter image description here

在SSRS数据集中(不在T-SQL中)我添加了一个名为Another的计算字段

enter image description here

另一个字段设置为以下表达式:

=Fields!SalesRep.Value & "-" & Fields!Category.Value

我添加了一个包含以下数据排列的Tablix

enter image description here

正如我之前提到的,类别字段是硬编码的,右侧列是Sales 设置为此表达式:

=iif(IsNothing(lookup(Fields!SalesRep.Value & "-" & ReportItems!Textbox62.Value,
Fields!Another.Value,Fields!Sales.Value,"DataSet7")),0,
lookup(Fields!SalesRep.Value & "-" & ReportItems!Textbox62.Value,
Fields!Another.Value,Fields!Sales.Value,"DataSet7"))
  

注意: ReportItems!Textbox62.Value对应于G1的文本框   被硬编码了。您必须替换文本框参考   在每个类别的Tablix中对应。

它将预览下面的Tablix。

enter image description here

如果这有用,请告诉我。