2015-11-02 60 views
0

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

The isnull function requires 2 argument(s).

我用下面的查询:

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

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

这工作如果参数只是有一个值。

+0

你是什么意思:参数有多个值? –

+0

例如,当Country参数包含法国和希腊而不是其中的一个时 –

+0

在这种情况下,您首先需要将其分成两部分。将2个值置于1个变量中并不是一个好主意。你可以为每个国家使用一个表值参数 –

回答

0

尝试在以下使用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)) 
+0

语法似乎有效,我不获取任何错误消息。事情是:我的查询结果现在关闭。它返回的记录包含的值超出了我的参数指定的值。 –

+0

@KipDrordy尝试使用'COALESCE',更新了答案。 –

0

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

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

它实际上是更容易比我本来以为,我用下面的查询:

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

感谢您的回复。