代码之家  ›  专栏  ›  技术社区  ›  Shayki Abramczyk Cece Dong - MSFT

将SSRS参数转换为Null

  •  0
  • Shayki Abramczyk Cece Dong - MSFT  · 技术社区  · 6 年前

    我有SSRS报告,显示了市场营销的特点。在MF中有一个名为“Test”的字段,值为“PSI 1”或“PSI 2”,并且该字段可以为空。

    我使用以下查询为测试参数添加了一个数据集:

    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 2 Null :

    enter image description here

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

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

    我的问题是:

    而不是 无效的 在下拉列表上,我想写下来 No PSI

    3 回复  |  直到 5 年前
        1
  •  0
  •   iamdave    6 年前

    在参数属性的 Available Values 屏幕上您将看到 Value Label

    在测试参数的数据集中,添加一列来保存 标签 要传递给查询的值的。这个可以和你的一样 价值 如果你愿意的话,但是给了你所需要的灵活性 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
    

    完成此操作后,请更改参数以使用 价值 字段作为参数值和 标签

        2
  •  0
  •   JonWay    6 年前
    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
  •  0
  •   Shayki Abramczyk Cece Dong - MSFT    6 年前

    where COALESCE(Corp_Test, 'Null') IN (@TestParam) 具有 where COALESCE(Corp_Test, 'No PSI') IN (@TestParam) ,并在数据集中替换 SELECT 'Null' 具有 SELECT 'No PSI' .