首页 文章

如何在SSRS参数中组合数据类型?

提问于
浏览
0

背景 - 我正在尝试使用包含多个参数的Report Builder 3.0在SSRS中创建报告 . 该请求是在打开报表时显示所有数据行 . 然后,最终用户可以选择一个或多个参数以减少显示的结果 . 我可以使用类似下面的内容来使用它 .

参数的数据集,其中可用值来自查询,(数据集类型为文本)

对于数字字段:

SELECT 0 'FACG'  UNION ALL  SELECT DISTINCT STR(ACG) FROM  STG_CSI_SA_CONFIRM

对于包含文本的列:

SELECT 'Any' 'FunderName'  Union All  Select DISTINCT NAME FROM  STG_CSI_SA_CONFIRM

在报告的数据集中,我有:

WHERE  ('Any' IN (@FrName) or Fname.name in (@FrName)) AND ( 'Any' IN (@FACG) OR FLIST.FACG IN (@FACG))

结果是两个参数框,一个表示0,一个表示任意,报表在首次打开时运行 . 然后,最终用户可以从FACG中选择一个或多个数字,或从FRName中选择一个或多个名称 .

My question is ,如何调整第一个参数以显示“任何”而不是零作为默认值?返回的所有值都是7位数的整数 . 当我只是将0更改为Any时,我收到有关转换数据类型的错误消息 . 如果我使用STR()我可以从SQL服务器中获取一个列表,我会得到一个我期望的列表 . (任何,1234567,1234568等)但我无法让这份名单在SSRS中发挥作用 .

谢谢

[R

1 回答

  • 0

    两种方法来做到这一点 . 1.确保为参数提供值的数据集有两列,一列用于在数据集中实际执行过滤/连接的ID列,另一列是用户可见的标签 . 就像是

    ID         Label
    'Any'      0
    '1234567'  1234567
    '1234568'  1234568
    
    • 如果主数据数据集是一个查询(不是存储过程),那么您可以简单地使用如上所述的参数数据集,但不包含'Any'行 . 然后将可用值设置为参数数据集,将默认值设置为相同的参数数据集 . 默认情况下,将选择所有参数 .

    在您的主数据数据集中,查询将沿着

    SELECT * FROM myTable WHERE myColumn IN (@myParameterName)
    

    SSRS会将参数中的选定值转换为逗号分隔值列表,并将它们注入查询中 .

相关问题