在 SSRS 中显示多个折线图

Show multiple line chart in SSRS

我正在 SSRS 中开发报告,我必须在折线图上显示数据。 折线图因用户选择的参数而异。

现在我的问题是如何根据所选参数生成折线图。根据用户选择的参数,折线图有时可能是2,有时可能是4。

请告知如何操作。

在下面的例子中,我使用了一些基本的人口数据,returns

国家、年份和人口。

这里是SQL生成样本数据

DECLARE @t TABLE(Country varchar(20), [Year] int, Population float)

INSERT INTO @t VALUES
('France', 2000, 59.0),
('France', 2005, 61.1),
('France', 2010, 62.9),
('France', 2015, 64.5),
('France', 2020, 65.3),
('Germany', 2000, 81.4),
('Germany', 2005, 81.6),
('Germany', 2010, 80.8),
('Germany', 2015, 81.8),
('Germany', 2020, 83.8),
('UK', 2000, 58.9),
('UK', 2005, 60.3),
('UK', 2010, 63.5),
('UK', 2015, 65.9),
('UK', 2020, 67.9)

SELECT * FROM @t
    WHERE Country = @Country

最后的 WHERE 子句使用了一个参数 @Country,它将从报告中传入。

方法

我们将创建一个显示单个国家/地区人口的报告,这将用作子报告。 然后我们将创建一个主报表,根据需要多次调用子报表。

创建子报表

我创建了一个新报表,使用上面的查询添加了一个数据集并调用了数据集 dsPopulation。这会自动生成参数 @Country。这个参数不需要做任何操作,用户不会直接使用它。

然后我在报告中添加了一个折线图并将 Population 拖到 Values 部分,YearCategory Groups 部分,CountrySeries Groups 部分如下所示。

保存报告,将其命名为 _sub_PopulationReport

.

现在创建主报表

创建新报告。

添加一个包含不同国家/地区列表的新数据集 'dsCountries'。你必须决定如何最好地做到这一点。您也许可以执行类似 SELECT DISTINCT Country FROM myDataTable ORDER BY Country 的操作。对于这个例子,我将硬编码列表。

数据集查询如下所示,

DECLARE @t TABLE(Country varchar(20))
INSERT INTO @t VALUES
('France'), ('Germany'), ('UK')

SELECT * FROM @t
    WHERE Country IN (@Country)

这将自动创建一个 Country 参数。 编辑参数并将可用值列表设置为国家列表。您可以通过将其指向仅手动添加它们的查询来执行此操作。

设置参数为Multi-Value

现在在报表设计中添加一个Table。

接下来,在任何行或列 header 上 right-click(任何一个都可以),然后选择 "Tablix Properties"。将 "Dataset Name" 选项设置为您刚刚创建的数据集 (dsCountries)。

接下来,删除 header 行和两列,剩下一列 'cell'。

使 table 足够宽以适合您的图表(高度并不重要)。

在剩余的单元格中,right-click 并选择 "Insert => Subreport"

Right-click <Subreport> 占位符并选择 "Subreport properties"。在选项 "Use this report as a subreport" 下选择我们之前创建的报告 (_sub_PopulationReport)。

单击左侧的 "Parameters" 选项卡,然后 "Add"

在 "Name" 下选择或键入 Country 并在 "Value" 下选择或键入 [Country]

就是这样!

报表设计应该看起来像这样...(注意我的子报表名称与上面的不同,请忽略它。)

如果我 运行 和 select 1 个国家/地区的报告我得到这个..

如果我 select 更多国家(在这种情况下是所有国家)我得到这个...