【问题标题】:Error in Multi valued parameters in SSRS QuerySSRS 查询中的多值参数错误
【发布时间】:2016-02-02 07:23:01
【问题描述】:

当我的参数有多个值时,我收到以下错误:

isnull 函数需要 2 个参数。

我使用以下查询:

(ISNULL (@Country, N'1') = N'1'
OR Contract.Country IN (@Country)) 

AND (ISNULL(@Season, N'1') = N'1'
OR Contract.Season IN (@Season))

如果参数只有一个值,则此方法有效。

【问题讨论】:

  • 什么意思:参数有多个值?
  • 例如当 Country 参数包含法国和希腊而不是其中之一时
  • 在这种情况下,您首先需要拆分为 2。将 2 个值放入 1 个变量中并不是一个好主意。您可以为每个国家/地区使用带有一行的表值参数
  • 这样想:(Country IN (@Country)) AND (Season IN (@Season)) 但可以为空

标签: sql tsql reporting-services parameters ssrs-2012


【解决方案1】:

尝试在下面使用CASE

CASE WHEN @Country IS NULL THEN N'1' ELSE @Country END = N'1' 
OR Contract.Country IN (@Country)) 

或者尝试使用COALESCE

(COALESCE(@Country, N'1') = N'1'
OR Contract.Country IN (@Country)) 

AND (COALESCE(@Season, N'1') = N'1'
OR Contract.Season IN (@Season))

【讨论】:

  • 语法似乎有效,我没有收到任何错误消息。事情是:我的查询结果现在关闭了。它返回包含我的参数指定之外的其他值的记录。
【解决方案2】:

在数据集的 SELECT 部分处理 ISNULL 逻辑,并在报表参数属性中确认两个参数都选中了“允许多个值”和“允许空值”复选框。

  1. 右键单击“参数”列表中的参数以打开“报告参数属性”对话框。
  2. 在“常规”页面中,选中“允许多个值”框。
  3. 在“常规”页面中,选中“允许空值”框。
  4. 将 SELECT 列表中的字段更改为使用 ISNULL(@Country, N'1')

【讨论】:

    【解决方案3】:

    实际上比我想象的要容易,我使用了以下查询:

    (Contract.Season IN (@Season)) 并允许 ssrs 中的参数为空值。

    感谢所有回复。

    【讨论】:

      猜你喜欢
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多