在 "Available values" 中将多个值的列表设置为一个 SSRS 参数
Setting a list of several values to one SSRS parameter in "Available values"
我的 SSRS 报告中有一个(整数)多值参数。此参数的“可用值”当前是从返回 1 到 15 之间的整数的查询中获取的。选择一个或多个值时一切正常。
现在,我想自己设置这些
可用值(不再通过查询)并将几个可能的值分组为 3 组:1、2、3、4、5 和 6、7、8、9、10 和 11、12、13、14、15 .值字段(在“可用值”中)的语法应该是什么
Report Parameters Properties
我建议您创建一个永久的 table 来支持它,如果您需要从其他项目中使用它,这会很方便。您可以将其添加为特定于报告的数据集,但这似乎超出了它的价值。
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
,并将值设置为 RangeID
,将标签设置为 Range
接下来创建一个隐藏参数,我们称之为@selectedNumbers
现在使用类似
的方法创建一个新数据集
SELECT iValue FROM RangeNumbers WHERE RangeID IN(@ranges)
这将填充 table 范围内与用户所做选择相匹配的所有 iValue
。
终于可以在您的主数据集中执行
SELECT * FROM myTable WHERE fieldName IN(@selectedNumbers)
应该是这样。
我的 SSRS 报告中有一个(整数)多值参数。此参数的“可用值”当前是从返回 1 到 15 之间的整数的查询中获取的。选择一个或多个值时一切正常。
现在,我想自己设置这些
可用值(不再通过查询)并将几个可能的值分组为 3 组:1、2、3、4、5 和 6、7、8、9、10 和 11、12、13、14、15 .值字段(在“可用值”中)的语法应该是什么
Report Parameters Properties
我建议您创建一个永久的 table 来支持它,如果您需要从其他项目中使用它,这会很方便。您可以将其添加为特定于报告的数据集,但这似乎超出了它的价值。
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
,并将值设置为 RangeID
,将标签设置为 Range
接下来创建一个隐藏参数,我们称之为@selectedNumbers
现在使用类似
的方法创建一个新数据集SELECT iValue FROM RangeNumbers WHERE RangeID IN(@ranges)
这将填充 table 范围内与用户所做选择相匹配的所有 iValue
。
终于可以在您的主数据集中执行
SELECT * FROM myTable WHERE fieldName IN(@selectedNumbers)
应该是这样。