如何根据 2 个数据源过滤 s-s-rS 报告

Posted

技术标签:

【中文标题】如何根据 2 个数据源过滤 s-s-rS 报告【英文标题】:How to filter a s-s-rS report based on 2 datasources 【发布时间】:2018-03-06 15:44:37 【问题描述】:

我创建了一个存储过程,其中有来自 2 个数据源的数据。我在源 A 和源 B 之间创建了一个联合,然后将其作为数据集提供给 s-s-rS 报告。 现在,用户希望查看基于源参数的报告,这将使他们能够根据“源 A”、“源 B”或“两者”的数据源选择/过滤报告。因此,如果用户选择源 A ,则报告应仅显示源 A 的数据,如果“两者”,则它将显示源 A 和源 B 的结果。

一种方法,我试图解决这个问题是创建 3 个单独的数据集,然后使用一个参数。我不确定这是否是最好的设计方法。如果有人有更好的想法,请分享。

提前致谢!

【问题讨论】:

【参考方案1】:

您可以简单地在您的查询中标记一个额外的列,其中源标识类似于

SELECT *, 'A' as Src FROM myFirstDataSource
UNION
SELECT *, 'B' as Src FROM mySecondDataSource

然后只需在 Src 列上应用过滤器。

或者,只需在 SP 本身中执行此操作,方法是从报告中传递一个参数以确定要获取的数据,例如。

CREATE PROC myProc (@myParam varchar(1) = '') AS
DECLARE @t TABLE (Src varchar(1), ColumnA varchar(10), ColumnB int, ColumnC int)

IF (@myParam = '' OR @myParam = 'A')
    BEGIN -- get data from first datasource
        INSERT INTO @t
        SELECT 'A', someCOlumnA, SomeColumnB, SomeColumnC FROM myFirstDataSource
    END

IF (@myParam = '' OR @myParam = 'B')
    BEGIN -- get data from second datasource
        INSERT INTO @t
        SELECT 'B', someCOlumnA, SomeColumnB, SomeColumnC FROM mySecondDataSource
    END

SELECT * FROM @t

您实际上并不需要第二个选项中的 Src 列,但如果您想在报告中突出显示数据的来源,它可能会很有用。

【讨论】:

以上是关于如何根据 2 个数据源过滤 s-s-rS 报告的主要内容,如果未能解决你的问题,请参考以下文章

如何根据2个数据源过滤SSRS报告

s-s-rS 中的自定义 tablix 过滤器

如何使用 SSIS 运行 s-s-rS 报告?

s-s-rS 13 (SQL 2016) 报告缓存问题

s-s-rS 图表报告,带有用于过滤或更改数据集的滑块

如何在 s-s-rS 中创建下拉过滤器列表?