2013-11-20 101 views
0

我有一个多值参数@products,主数据集必须根据提供给@products的值获取特定ID的数据。 我将@products的可用值作为特定值(a,b和c)。主查询是一样的东西多值参数SSRS

select version,date from table 
where (@products=a and id in('1','2','3') 
or @products=b and id in ('4','5','6') 
or @products=c and id in('7','8','9')) 

当选择@products只有1个值也能正常工作,但在选择多个值抛出一个错误。

任何人都可以请帮我解决这个问题。

+0

未声明@ products.The错误是数据集'Common'的查询执行失败',' – user2974732

+0

@avinash附近的语法不正确传递给数据集“Common”的参数的值为as = Parameters!仅限于Product.Value。 – user2974732

回答

2

如果您将多个值传递给@products,那么您不希望有一个where子句来检查@products是否等于某个值,因为那里有多个值。也许可以重写这样的查询:

select version, date from table 
where (('a' in (@products) and id in ('1','2','3')) 
    or ('b' in (@products) and id in ('4','5','6') 
    or ('c' in (@products) and id in ('7','8','9'))) 

我假设您传递给@products的值是字符串/文本。我不确定为什么你将ID作为文本,因为我猜它们是整数,但是因为我没有这些信息,所以我将它们留在查询中,就像以前一样。

+0

谢谢。有效.. – user2974732