无论是否存在记录,都提供完整的结果表

时间:2013-11-04 15:44:38

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

假设我有一个'Master'数据集,用于生成大量的表,所有这些表都有自己的附加过滤和分组应用。 “主”数据集包含大约30列,其中一列是“SL”,下表使用此列并计算“主”数据集中的记录数,以生成按日期分组的总计。

enter image description here

我的问题是,假设还有另外两个'SL',它们是'A'和'未指定',我怎么可以为它们包含行,无论'Master'数据集是否包含在该类型下标记的记录,这三个日期的总数自然是零。

我可以通过以下方式生成一个列出所有类型的附加数据集:

select distinct type_sl
from [mytable]

但我无法将其拖放到我现有的表格中,因为它是不同数据集的一部分,我也看不到如何更改现有数据集以包含这些类型的行,因为其余数据将是是的,还是这样做呢?

1 个答案:

答案 0 :(得分:1)

您的建议没有任何问题,即将数据集调整为始终包含这些SL值,即使其他所有内容都是NULL

即。假设数据集是从T-SQL查询生成的,请使用[mytable]作为基表,并根据需要返回LEFT JOIN。

如果需要,您可以在报告表达式中使用IsNothingNULL值替换为 0

另一种方法是使用具有设定行数的表来表示所有必需的SL值,而不是依赖于由Tablix类型对象动态生成的所需列,然后使用适当的条件表达式填充列的值,例如对于 B 列,请使用以下内容:

=Sum(IIf(Fields!type_sl.Value = "B", Fields!MyValue.Value, Nothing)

但是,我倾向于第一个选项 - 主要优点是您仍然可以维护现有结构,即动态分组以根据需要增加行数,以及您只需要更改底层数据库代码的事实将更改应用于使用该数据库代码的所有项目。