【问题标题】:Convert SSRS parameter to Null将 SSRS 参数转换为 Null
【发布时间】:2019-02-16 23:51:55
【问题描述】:

我有显示营销功能的 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)

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

我的问题是:

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

【问题讨论】:

  • 为什么不直接更改您的数据源以选择 no psi 而不是 null,然后更改您的 coalesce 以使用相同的 (coalesce(corp_test,'no psi'))?
  • 有效!谢谢!!我完全是 SSRS 的新手,所以我不太了解 COALESCE(Corp_Test, 'Null') 到底在做什么......

标签: sql-server reporting-services ssrs-2012


【解决方案1】:

@sgeddes 在他的评论中回答了最简单的方法。

我刚刚将where COALESCE(Corp_Test, 'Null') IN (@TestParam) 替换为where COALESCE(Corp_Test, 'No PSI') IN (@TestParam),并在数据集中我将SELECT 'Null' 替换为SELECT 'No PSI'

【讨论】:

    【解决方案2】:
    SELECT
    ISNULL(Corp_Test,'No PSI') AS Corp_Test
    FROM 
    (SELECT DISTINCT Corp_Test
      FROM [Tfs_Warehouse].[dbo].[CurrentWorkItemView]
     WHERE ProjectNodeGUID = @ProjectGuid
       AND System_WorkItemType = 'Marketing Feature'
    UNION
    SELECT 'Null'
    ) AS Corp
    ORDER BY ISNULL(Corp_Test,'No PSI') 
    

    请记住在 where 子句主查询中实现更改。主查询是指提供您报告的查询

    【讨论】:

      【解决方案3】:

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

      在测试参数的数据集中添加一列以保存您要传递给查询的值的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 字段作为向用户显示的标签。

      【讨论】:

      • 感谢您的回答,它可以在其他报告中帮助我,但@sgeddes 的评论对我有用:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 2012-11-18
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      相关资源
      最近更新 更多