首页 > 解决方案 > 将 SSRS 参数转换为 Null

问题描述

我有显示营销功能的 SSRS 报告。我们在 MF 中有一个名为“Test”的字段,其值为“PSI 1”或 PSI 2,该字段也可以为空。

我使用此查询为 Test 参数添加了一个数据集:

SELECT DISTINCT Corp_Test
  FROM [Tfs_Warehouse].[dbo].[CurrentWorkItemView]
 WHERE ProjectNodeGUID = @ProjectGuid
   AND System_WorkItemType = 'Marketing Feature'
UNION
SELECT 'Null'
ORDER BY Corp_Test

现在在报告中,值为PSI 1 PSI 2Null

在此处输入图像描述

在主查询中,我根据如下参数过滤了结果:

where COALESCE(Corp_Test, 'Null') IN (@TestParam)

该报告工作正常,如果我选择了所有值,我还会得到带有空测试字段的营销功能。

我的问题是:

而不是Null在下拉列表中,我希望它被写入No PSI,实际上在主查询中它将是 Null。可能吗?

标签: sql-serverreporting-servicesssrs-2012

解决方案


在您的参数属性中,Available Values您将在屏幕上看到Value和的选项Label。这允许您向最终用户显示一件事(例如:用户友好的描述),同时将另一件事(例如:键值)传递给报告。

在测试参数的数据集中添加一列来保存Label要传递给查询的值。如果您愿意,这可以与您的相同Value,但为您提供Null输入所需的灵活性:

SELECT DISTINCT Corp_Test as Value
               ,Corp_Test as Label
  FROM [Tfs_Warehouse].[dbo].[CurrentWorkItemView]
 WHERE ProjectNodeGUID = @ProjectGuid
   AND System_WorkItemType = 'Marketing Feature'
UNION ALL           -- As you have DISTINCT above, UNION ALL will work faster and give the same results as UNION (which removes duplicates)
SELECT 'Null' as Value
      ,'No PSI' as Label
ORDER BY Corp_Test

完成此操作后,更改参数以将Value字段用作参数值,并将Label字段用作向用户显示的标签。


推荐阅读