将多个值的列表设置为"Available values"中的一个 SSRS 参数



我的SSRS报告中有一个(整数)多值参数。"可用值"对于此参数,当前从返回1到15的整数的查询中获得。当选择一个或几个值时,一切都很好。现在,我想自己设定这些a可用值(不再通过查询)并将几个可能的值分组为3组:1、2、3、4、5和6、7、8、9、10和11、12、13、14、15。Value字段(在"可用值"中)的语法应该是什么?
报表参数属性

我建议您创建一个永久表来支持这一点,如果您需要在其他项目中使用它,这很方便。您可以将其添加为报告特定数据集,但这似乎比它的价值更多的工作。

CREATE TABLE RangeNumbers(RangeID int, Range varchar(20), iValue int)
INSERT INTO RangeNumbers VALUES 
(1, 'From 1 to 5', 1),
(1, 'From 1 to 5', 2),
(1, 'From 1 to 5', 3),
(1, 'From 1 to 5', 4),
(1, 'From 1 to 5', 5),
(2, 'From 6 to 10', 6),
(2, 'From 6 to 10', 7),
(2, 'From 6 to 10', 8),
(2, 'From 6 to 10', 9),
(2, 'From 6 to 10', 10),
(3, 'From 11 to 15', 11),
(3, 'From 11 to 15', 12),
(3, 'From 11 to 15', 13),
(3, 'From 11 to 15', 14),
(3, 'From 11 to 15', 15)

当然,您可以将其规范化,但为了简单起见,我就这样留下了。

一旦你有了这个,你就可以为你的参数值创建一个数据集,像这样

SELECT DISTINCT RangeID, Range FROM RangeNumbers ORDER BY RangeID

我已经安排了这些,所以它们会以逻辑顺序出现在你的报告中假设该参数名为@ranges,并将Value设置为RangeID, Label设置为Range

接下来创建一个隐藏参数,我们将其命名为@selectedNumbers

现在使用类似

的内容创建一个新的数据集
SELECT iValue FROM RangeNumbers WHERE RangeID IN(@ranges)

然后将使用与用户所做选择匹配的范围表中的所有iValue填充。

最后在你的主数据集中你可以直接输入

SELECT * FROM myTable WHERE fieldName IN(@selectedNumbers)

应该是这样。

最新更新