Sql server 在SSRS中手动输入参数值或默认全部

Sql server 在SSRS中手动输入参数值或默认全部,sql-server,reporting-services,parameters,ssrs-2012,Sql Server,Reporting Services,Parameters,Ssrs 2012,我试图在SSRS中创建一个参数,用户可以选择手动输入id,或者让报告返回所有记录。以下是参数当前的外观: 在这种情况下,用户可以手动输入一个providerid,该ID有效。但是,用户是否可以将providerid参数保留为空,然后默认情况下,报告将针对所有记录运行 providerid参数由存储过程填充: Select distinct cast(providerid as varchar(25)) as providerid from Table A 我在这里读过其他类似的

我试图在SSRS中创建一个参数,用户可以选择手动输入id,或者让报告返回所有记录。以下是参数当前的外观:

在这种情况下,用户可以手动输入一个providerid,该ID有效。但是,用户是否可以将providerid参数保留为空,然后默认情况下,报告将针对所有记录运行

providerid参数由存储过程填充:

    Select distinct cast(providerid as varchar(25)) as providerid
    from Table A

我在这里读过其他类似的文章,但我不知道如何完成这项工作。

完成这项工作的标准方法是:

向下拉列表中添加另一个名为ALL的项目,并使用特殊值

Select distinct  
cast(providerid as varchar(25)) as providerid,
cast(providerid as varchar(25)) as providerLabel
from Table A
union all
select -1, 'All Providers'
确保正确分配标签和值

在存储过程中允许此特殊值:

where ...
and  (providerid = @providerid or @providerid = -1)
and ...

我还是不能让它正常工作。参数框不应填充任何内容。它应该是空的,它将返回所有记录,或者用户可以手动输入id。如果它必须是空的,则将“所有提供者”替换为“”。如果这不能解决问题,请解释清楚。我想问题可能在于如何填充SSRS参数框。我不知道该怎么办。我将可用值留空。对于默认值,我选择了“”。在我的SP中,我添加了一个UNION ALL Select-1“”。但从逻辑上讲,这意味着如果下拉框留空,值将=-1,这不会返回任何内容。我需要-1来返回所有的值。这就是我答案的第2部分所解释的(尽管没有太多细节)。您需要更改报告过滤器,以便如果通过-1,它将返回所有内容。这是SSRS的标准实践。我假设存储过程是填充报告的过程,但可能我误解了您是否解决了问题?同样,这是一种经过验证且可靠的方法来实现此功能