这篇 SSRS 文章展示了如何在查询级别上使报表参数值可选。这是最快的方法;如果您可以编辑查询,请使用此方法。
右键单击“数据集”文件夹以创建新的数据集。下面的屏幕截图显示了我们将用于此使用查询的可选报表参数示例的数据集。
SELECT Geo.EnglishCountryRegionName AS Country, Geo.StateProvinceName AS State,
Geo.City, SUM(Fact.OrderQuantity) AS Orders, SUM(Fact.TotalProductCost) AS ProductCost,
SUM(Fact.SalesAmount) AS Sales, SUM(Fact.TaxAmt) AS Tax
FROM FactInternetSales AS Fact INNER JOIN DimCustomer
ON DimCustomer.CustomerKey = Fact.CustomerKey
JOIN DimGeography AS Geo ON DimCustomer.GeographyKey = Geo.GeographyKey
WHERE Geo.EnglishCountryRegionName = @Country
GROUP BY Geo.EnglishCountryRegionName, Geo.StateProvinceName, Geo.City
我们使用具有 @Country 的 WHERE 条件创建了一个参数。
使用查询的可选 SSRS 报表参数
我们设计了一个简单的按州销售的表报表,并对字体和颜色进行了格式化。
要使报表参数可选,我们需要一个分组依据的列。因此,在“行组”下,单击“详细信息”旁边的向下箭头,然后选择“添加组”和“父组”。

我选择“按国家/地区分组”选项。现在,您可以在“行组”部分看到“国家/地区”。

如果查看报表预览,输入美国会显示所有属于美国的销售额。但是,如果您不提供任何国家/地区名称,则会显示空白报表。

双击“CountrySalesDSet”主数据集,并使用 SQL IS NULL 函数。
SELECT Geo.EnglishCountryRegionName AS Country, Geo.StateProvinceName AS State,
Geo.City, SUM(Fact.OrderQuantity) AS Orders, SUM(Fact.TotalProductCost) AS ProductCost,
SUM(Fact.SalesAmount) AS Sales, SUM(Fact.TaxAmt) AS Tax
FROM FactInternetSales AS Fact INNER JOIN DimCustomer
ON DimCustomer.CustomerKey = Fact.CustomerKey
JOIN DimGeography AS Geo ON DimCustomer.GeographyKey = Geo.GeographyKey
WHERE Geo.EnglishCountryRegionName = @Country OR @Country IS NULL
GROUP BY Geo.EnglishCountryRegionName, Geo.StateProvinceName, Geo.City
接下来,双击报表参数,并勾选“允许 NULL 值”选项。

现在,如果您查看使用查询的可选 SSRS 报表参数预览,NULL 是默认勾选的,并显示所有国家/地区的销售额。

取消勾选 NULL 并提供国家/地区名称以查看属于该国家/地区的商品。
