SSRS:底层SQL使用"联合所有" - 结果集比预期小得多 - 加上比Tablix筛选更好的方法



我正在使用SSRS,Visual Studio 2015和底层TSQL。 SSRS 使用 2016/01/报告定义。

我需要使用基础 SQL 语句过滤参数(使用带有"like"选项的 tablix 过滤器(:

SELECT col1 as result1, col2 as result2 FROM table1
UNION all
SELECT colA as result1, colB as result2 FROM table 2
order by result1

类似 Tablix 的语句是:

="*" + Parameters!Result1.Value + "*"

假设该参数会导致将基础 where 子句应用于上述 UNION 中的所有两个 SQL 语句,但我不确定。[这个假设是不正确的:见下面的答案]

该项目的 SQL 服务器是 SQL Server 2008 R2、2012 或 2014。

无论如何,当我使用 SSMS [v 17.7] 中的 where 语句运行查询时,它非常快,并且返回 12 个结果。

但是当我在 SSRS 的 rdl 文件预览中运行查询时,它非常慢。 因此,我正在使用:

Set Rowcount 1000

陈述。 但是,它只返回 1 个结果,而不是 12 个结果。 如果我删除"设置行计数"选项,则没有任何可用情况发生,并且"正在加载"消息只有一个旋转图标。

有没有人知道如何修改查询以过滤参数,以及为什么返回的结果比预期的少?

可能性:它是否运行没有 where 的查询,将结果限制为 1000,然后根据所涉及的顺序排除几个潜在的结果匹配项?[这种可能性实际上是发生的事情,请参阅下面的答案]

注意:有一个比原始问题中询问的方法更好的方法。 代替 tablix 筛选,可以在 SQL where 查询中执行筛选器。 请参阅OP的答案。

查询根本不被修改。数据集查询运行并返回所有结果,就像在 SSMS 中运行查询一样。如果 Tablix 上有筛选器,则该筛选器仅适用于该 Tablix。您可以有另一个报表项,例如 Tablix 或图表,甚至指向同一数据集,每个报表项都有自己的筛选器。

您的查询可能使用了错误的计划,您应该能够通过在数据集查询的末尾添加 OPTION(重新编译(来轻松测试这一点。这将强制重新创建计划。不要设置行计数,否则您将无法获得真正的测试。

如果数据集查询在 SSRS 中仍然运行缓慢,请尝试使用探查器(从 SSMS 工具菜单(对连接进行跟踪,并检查正在执行的 SQL 是否符合预期。

如果这没有帮助,请发布完整的查询,以便对其进行评估(我假设您的实际查询不是您在问题中所说的......

虽然艾伦·斯科菲尔德(Alan Schofield(的答案是完整的,但有一个比原始问题更好的方法。

到目前为止,匹配参数是更好的选择。

为此,可以在 rdl 文件中的适当位置使用以下 xml 语法:

<DataSets>
<DataSet Name="DataSet1">
<Query>
<DataSourceName>MyDataSource</DataSourceName>
<QueryParameters>
<QueryParameter Name="@Result">
<Value>=Parameters!Result.Value</Value>
</QueryParameter>
</QueryParameters>
<CommandText>
--------------------------------------------------------------------
use MyDataSource;
--------------------------------------------------------------------
select col1 as result1,  col2 as result2 from table1 a
where  col1 LIKE '%' + @Result + '%'
Union all
select colA as result1,  colB as result2 from table2 b
where  colA  LIKE '%' + @Result + '%'
order by  result1,  
--------------------------------------------------------------------</CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>

相关内容

最新更新