SSRS 中的多参数允许用户动态地使用多个参数值来筛选 SSRS 报表。这类似于 Flipkart 和 Amazon 等电子商务网站中选择品牌、尺寸和价格范围。
本文将通过一个示例,向您展示如何在 SSRS 或 SQL Server Reporting Services 中添加多个参数。
我们使用下面显示的报表来解释 SSRS 报表中的多参数。请参阅表格报表文章以了解 SSRS 表格报表的创建。如果您观察到下面的屏幕截图,它是一个普通的表格报表,包含国家、州、城市、全名、职业、年收入和销售额列。

下面的屏幕截图显示了我们用于此报表的数据源和数据集。

我们在上面的屏幕截图中使用的 SQL 命令是
SELECT Geo.[EnglishCountryRegionName] AS [Country]
,Geo.[StateProvinceName] AS [State]
,Geo.[City]
,Cust.FirstName +' '+ Cust.LastName AS [Full Name]
,Cust.EnglishEducation AS Education
,Cust.EnglishOccupation AS Occupation
,SUM(Cust.YearlyIncome) AS YearlyIncome
,SUM(Fact.SalesAmount)AS SalesAmount
FROM DimCustomer AS Cust
INNER JOIN
FactInternetSales AS Fact ON
Cust.CustomerKey = Fact.CustomerKey
INNER JOIN
[DimGeography] AS Geo ON
Cust.GeographyKey = Geo.GeographyKey
GROUP BY Geo.[EnglishCountryRegionName]
,Geo.[StateProvinceName]
,Geo.[City]
,Cust.FirstName
,Cust.LastName
,Cust.EnglishEducation
,Cust.EnglishOccupation
ORDER BY [Country]
在 SSRS 中添加多参数
在开始创建国家参数之前。让我们在“报表数据”选项卡中创建一个数据集。首先,我们创建了一个嵌入式数据集,其中包含 [AdventureWorksDW2014] 数据库中 [DimGeography] 表的唯一国家名称。

我们在上面屏幕截图中使用的 SQL 命令是
SELECT [EnglishCountryRegionName] AS [Country] FROM [DimGeography]
要添加 SSRS 中的多参数,请右键单击“报表数据”选项卡中存在的“参数”文件夹,这将打开上下文菜单以选择“添加参数…”选项。

单击“添加参数…”选项后,它将打开一个名为“报表参数属性”的新窗口来配置参数属性。请为报表参数提供有效的名称、提示文本和数据类型。
允许多值:如果您希望允许用户选择多个值,请选中此选项。请参阅多值参数文章以了解多值的用途。

接下来,我们必须选择可用值。如果您可以手动指定值,则可以选择“指定值”选项并手动输入值。
在此 SSRS 多参数示例中,我们希望使用我们之前创建的 CountryName 数据集。因此,选择“从查询获取值”选项并从列表中选择数据集。

请指定值字段和标签字段。在这里,我们只有一列,所以两者都将是国家。
- 值字段:此值将发送到查询。报表将使用此值进行筛选。
- 标签字段:此值将显示给最终用户。

单击“确定”以完成国家参数的配置。
接下来,我们创建另一个嵌入式数据集,其中包含 [AdventureWorksDW2014] 数据库中 [DimGeography] 表的唯一州名称。我们在下面屏幕截图中使用的 SQL 命令是
SELECT DISTINCT
A1.[EnglishCountryRegionName]
,A2.[StateProvinceName]
FROM [DimGeography] AS A1
,[DimGeography] AS A2
WHERE A1.[EnglishCountryRegionName] = A2.[EnglishCountryRegionName]
ORDER BY [StateProvinceName]

接下来,我们必须创建另一个参数来保存州信息。因此,右键单击“报表数据”选项卡中存在的“参数”文件夹,这将打开上下文菜单以选择“添加参数…”选项。
请为报表参数提供有效的名称、提示文本和数据类型。如果您希望允许用户选择多个值,请勾选此“允许多值”选项。

在此 SSRS 多参数示例中,我们希望使用我们之前创建的 StateDS 数据集。选择“从查询获取值”选项并从列表中选择数据集。接下来,我们将 [State Province Name] 指定为值字段和标签字段。

单击“确定”以完成州参数的配置。
接下来,我们创建另一个嵌入式数据集,其中包含 [AdventureWorksDW2014] 数据库中 [DimGeography] 表的唯一城市名称。我们在下面屏幕截图中使用的 SQL 命令是
SELECT DISTINCT
A1. [StateProvinceName]
,A2.City
FROM [DimGeography] AS A1
,[DimGeography] AS A2
WHERE A1.StateProvinceName = A2.StateProvinceName
ORDER BY City

接下来,我们必须创建另一个参数来保存城市信息。因此,右键单击“报表数据”选项卡中存在的“参数”文件夹,这将打开上下文菜单以选择“添加参数…”选项。
请为报表参数提供有效的名称、提示文本和数据类型。如果您希望允许用户选择多个值,请勾选此“允许多值”选项。

在此 SSRS 多参数示例中,我们希望使用我们之前创建的 CityDS 数据集,因此选择“从查询获取值”选项并从列表中选择数据集。接下来,我们将 [City] 列指定为值字段和标签字段。

我们已成功为国家名称、州名称和城市创建了三个数据集和三个参数。
现在,我们必须应用数据集的筛选条件。请参阅数据集级别筛选文章以了解筛选的创建。
从“报表数据”选项卡中选择数据集,然后右键单击它将打开上下文菜单。请从中选择“数据集属性…”选项。

在此 SSRS 多参数示例中,我们将显示 [Country Parameter] 中存在的 [Country Name]、[State Parameter] 中存在的 [State Name] 和 [City Parameter] 中存在的 [City Name] 的记录。因此,我们将为国家、州和城市创建三个筛选器。

这里我们使用 SQL IN 运算符作为运算符。如果您在编写参数名称时遇到任何困难,请单击 fx 按钮并从 GUI 中选择参数名称。
单击“确定”以完成数据集级别筛选的配置。让我们单击“预览”选项卡以预览数据。

从上面的屏幕截图可以看出,它显示了一个空白报表,允许我们从我们创建的数据集中选择国家名称、州和城市中的多个值。

要显示记录,我们必须从列表中选择国家名称(们)、州名称(们)和城市名称(们),然后按 Enter。
此时,我们选择了澳大利亚国家、新南威尔士州以及 Coffs Harbour 和 Darlinghurst 城市。

在此 SSRS 多参数示例中,如果您知道每个国家/地区的所有州和城市名称,您将不会遇到任何问题。如果您不记得它们怎么办?为了解决这些情况,我们必须使用级联参数来筛选数据。