当查询 SSRS 中没有数据时向报表添加值
Adding values to a Report when there is no Data in query SSRS
我有一个查询 returns 销售代表编号、类别、销售额。
结果是这样的:
有 4 个类别 G1,G2,G3,G4
。
如您所见,销售代表 11
每个类别售出 10 个(黄色行)。
但代表 12
仅售出类别 G3
和 G4
.
我们的想法是在报告中显示所有类别,并用 0 填充所有未在该特定类别上销售的人。
它必须按销售代表分组,因此如果您按销售代表进行 tablix 分组,您将得到如下内容:
但是你想要这样的东西:
我可以使用任何表达式来添加这些吗?
到目前为止我所做的是创建一个组,该组当然是我的销售代表并组合该列的单元格并为每个类别创建一个行组,是这样的:
但如果您执行该报告,它将重复所有类别 G1、G2... 对于该特定销售代表的每次存在该类别。
另一个问题是,如果您的数据源中不存在硬编码类别,您如何评估报告中的硬编码类别,您无法创建 Iif("G1" = Fields!Category.Value,Fields!Sales.Value,"0")
,因为您没有将 G1
与 [=17= 进行比较] 或 IsNothing
,您正在比较它存在的内容。
我认为您可以在查询级别使用 T-SQL 顺利实现此目的。我不知道你为什么不使用最简单的方法来应用这种逻辑,因为在 T-SQL 中你可以使用 almost 每个逻辑。
但是我喜欢这种挑战,所以我提出了这个可能的解决方案。
这是我的示例数据集:
在 SSRS 数据集中(不在 T-SQL 中)我添加了一个名为 Another
的计算字段
另一个字段设置为以下表达式:
=Fields!SalesRep.Value & "-" & Fields!Category.Value
我添加了一个具有以下数据排列的 tablix
正如我之前提到的类别字段是硬编码的,右列带有 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"))
Note: ReportItems!Textbox62.Value
corresponds to textbox where G1
was hardcoded. You have to replace the textbox reference for the
corresponding in your tablix for every category.
它将预览下面的 tablix。
如果有帮助,请告诉我。
我有一个查询 returns 销售代表编号、类别、销售额。
结果是这样的:
有 4 个类别 G1,G2,G3,G4
。
如您所见,销售代表 11
每个类别售出 10 个(黄色行)。
但代表 12
仅售出类别 G3
和 G4
.
我们的想法是在报告中显示所有类别,并用 0 填充所有未在该特定类别上销售的人。
它必须按销售代表分组,因此如果您按销售代表进行 tablix 分组,您将得到如下内容:
但是你想要这样的东西:
我可以使用任何表达式来添加这些吗?
到目前为止我所做的是创建一个组,该组当然是我的销售代表并组合该列的单元格并为每个类别创建一个行组,是这样的:
但如果您执行该报告,它将重复所有类别 G1、G2... 对于该特定销售代表的每次存在该类别。
另一个问题是,如果您的数据源中不存在硬编码类别,您如何评估报告中的硬编码类别,您无法创建 Iif("G1" = Fields!Category.Value,Fields!Sales.Value,"0")
,因为您没有将 G1
与 [=17= 进行比较] 或 IsNothing
,您正在比较它存在的内容。
我认为您可以在查询级别使用 T-SQL 顺利实现此目的。我不知道你为什么不使用最简单的方法来应用这种逻辑,因为在 T-SQL 中你可以使用 almost 每个逻辑。
但是我喜欢这种挑战,所以我提出了这个可能的解决方案。
这是我的示例数据集:
在 SSRS 数据集中(不在 T-SQL 中)我添加了一个名为 Another
另一个字段设置为以下表达式:
=Fields!SalesRep.Value & "-" & Fields!Category.Value
我添加了一个具有以下数据排列的 tablix
正如我之前提到的类别字段是硬编码的,右列带有 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"))
Note:
ReportItems!Textbox62.Value
corresponds to textbox whereG1
was hardcoded. You have to replace the textbox reference for the corresponding in your tablix for every category.
它将预览下面的 tablix。
如果有帮助,请告诉我。