这篇 SSRS 文章展示了如何在查询级别处理 SSRS 中的 NULL 参数。如果可以编辑查询,此方法比编写表达式要容易得多。
右键单击“数据集”文件夹以创建新的数据集。在此示例中,在 SSMS 中写入以下代码将显示我们在此示例中用于查询级别的 Null 参数的数据集。
在这里,我们使用 where 条件和 @Class 来创建参数。我们在上述 SSRS 示例中使用的 Sql 查询是
SELECT Prod.EnglishProductName AS ProductName, Prod.Color, Prod.Class,
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 DimProduct AS Prod ON Fact.ProductKey = Prod.ProductKey
WHERE Prod.Class = @Class
GROUP BY Prod.EnglishProductName, Prod.Color, Prod.Class
SSRS 查询使用 Null 参数
我们设计了一个简单的产品销售表报告,并格式化了字体和颜色。一旦我们键入 L 作为参数值,报告预览将显示属于 L 类的行。但是,您无法获得属于 Null 的记录。

双击或右键单击并选择“@Country 参数属性”选项,这将打开“报告参数属性”窗口。勾选“允许 NULL 值”选项。

现在,我们可以在报告预览中查看 NULLs,但看不到 NULL 类的结果。为此,我们必须调整查询。

双击主数据集,并使用 ISNULL 函数 将 Null 替换为空。这意味着用下面显示的查询替换旧查询,然后单击 OK。
SELECT Prod.EnglishProductName AS ProductName, Prod.Color, Prod.Class,
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 DimProduct AS Prod ON Fact.ProductKey = Prod.ProductKey
WHERE ISNULL(Prod.Class, '') = ISNULL(@Class, '')
GROUP BY Prod.EnglishProductName, Prod.Color, Prod.Class
在 SSRS 查询级别 Null 参数的预览中,您现在可以看到 Class 为 Null 的产品。

如果您键入 L 并取消选中 Null,您可以看到属于 L 类的产品。
