我有一个多值参数@products
,主数据集必须根据提供给@products
的值来获取特定ID的数据。
我将@products的可用值作为特定值(a,b和c)。主查询类似于
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'))
当仅选择1个@products
值但在选择多个值时抛出错误时,此方法正常。
任何人都可以帮我解决这个问题。
答案 0 :(得分: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作为文本,因为我猜他们是整数,但我把它们留在查询中,因为我之前没有那些信息。