在 s-s-rS 中,您可以将多个参数值归为一个吗?
Posted
技术标签:
【中文标题】在 s-s-rS 中,您可以将多个参数值归为一个吗?【英文标题】:In s-s-rS, can you group multiple parameter values into one? 【发布时间】:2021-12-09 07:59:33 【问题描述】:我对 s-s-rS 比较陌生,但多年来一直在使用 SQL。我的任务是创建一份报告,根据其状态反映已发货物品。例如,我有 x 个具有不同状态的项目,包括“IN_TRANSIT”、“RECEIVING”、“SHIPPED”、“WORKING”和“CLOSED”。请求者询问我是否可以在报告下拉列表中提供以下选项:
“IN_PROCESS”状态过滤器,包括除“CLOSED”之外的所有状态。 “关闭”。
本质上,他们希望能够查看所有非关闭状态、已关闭、状态或全部。现在,我已经设置好了,因此您可以单独选择所有状态,本质上是让它们获得他们想要的数据,而不是使用“正确”的参数。
我的问题是,s-s-rS 是否提供了一种将非关闭状态“分组”到报告中的方法,以便当他们选择“IN_PROCESS”时,它将这些非关闭状态发送到我内置的 SQL 查询?使用 SQL 的问题在于,我创建的用于生成下拉选项的数据集提供了“CLOSED”和“IN_PROCESS”作为输出选项,但是当他们选择“IN_PROCESS”时(将该值发送到报告中的过滤器),因为它不是一个实际的状态,所以什么都不会回来。
如果需要更多信息或说明,请告诉我。
提前谢谢!
【问题讨论】:
如果您是 s-s-rS 新手,我真的建议您使用受支持的版本。 s-s-rS 2008 以及 SQL Server 2008 已超过 2 年不受支持。老实说,我什至不确定 VS 2008 和 BIDS 是否可以在最新版本的 Windows 上运行。 【参考方案1】:您可以在 SQL 查询中创建一个新列,并使用 CASE 语句为适用状态提供 IN_PROCESS 或 CLOSED 的值。然后你只需要过滤条件来匹配 s-s-rS 参数到新列。
【讨论】:
【参考方案2】:根据这种情况可能被重复使用的频率,应该有助于确定如何处理它。如果听起来它可能会成为一个常规过程......“哦,我们可以使用相同的过滤器但显示 xyz 的另一个报告”然后花时间正确设置,它将节省时间未来。
如果可能,我个人会添加一个数据库表,其中包含状态名称和状态组名称(为了简单起见,此处忽略完全规范化)。
CREATE TABLE StatusGroups(Status varchar(10), StatusGroup varchar(10))
INSERT INTO StatusGroups VALUES
('IN_TRANSIT', 'In Process'),('RECEIVING, 'In Process'),('SHIPPED', 'In Process'),('WORKING', 'In Process'),('CLOSED' 'Closed')
然后是一个简单的视图
CREATE MyNewView AS
SELECT t.*, g.StatusGroup
FROM MyTable t
JOIN StatusGroups g on t.STATUS = g.Status
现在更改您的报表数据集查询以使用此视图传递报表参数,如下所示...
SELECT *
FROM MyNewView
WHERE StatusGroup = @myReportParameter
报告参数的可用值列表的数据集可能类似于
SELECT DISTINCT StatusGroup FROM StatusGroups
这样,如果您每次都添加更多状态或状态组值,您可以在此表中添加一个条目,并且一切都会正常工作,而无需编辑您的报告。
【讨论】:
以上是关于在 s-s-rS 中,您可以将多个参数值归为一个吗?的主要内容,如果未能解决你的问题,请参考以下文章