带有 Condition 和 s-s-rS 参数的 Select 语句

Posted

技术标签:

【中文标题】带有 Condition 和 s-s-rS 参数的 Select 语句【英文标题】:Select statement with Condition and s-s-rS parameters 【发布时间】:2021-06-17 03:34:49 【问题描述】:

我有一个查询的情况如下。

在 s-s-rS 中,我有一个名为 Block 的 @Parameter,其值如下:块 A、块 B 和块 C。用户将选择日期范围,然后选择块值。

输出本质上是一个显示名称的资格系统: 主要查询如下:

Select EmpName, EmpID from EmpDtls where EmpassignID in (@Block)

现在我想做的如下:

当用户选择一个块时:查询应根据查询验证参数。有没有可能做这样的事情:

select Case
when (@Block) = A then (select Personnel_level from Block where PersnelQual = 'A', 'B')
when (@block) = C then (select Personnel_level from Block where PersnelQual = 'B', 'C')
END
from PersnelQual

所以当用户使用以下参数运行报表时:

开始日期:05/01/2021 结束日期:05/07/2021 块:A

输出应该是这样的

Emp Name Emp Id
Jim 123
Mary 456

这可能吗?

【问题讨论】:

@Block 是什么?逗号分隔的varchar?那你需要拆分字符串,你有哪个版本的SQL Server? 【参考方案1】:

不需要case。只需将条件放在WHERE 子句中即可:

select Personnel_level
from Block
where (@Block = A and PersnelQual in ('A', 'B')) or
      (@block = C and PersnelQual in ('B', 'C'));

【讨论】:

以上是关于带有 Condition 和 s-s-rS 参数的 Select 语句的主要内容,如果未能解决你的问题,请参考以下文章

带有公式的 s-s-rS 日期默认值禁用参数

带有 ODBC 连接的 s-s-rS 参数基础知识

如何使用 s-s-rS 中的 URL 访问传递带有特殊字符的多个参数

如何在带有参数的 s-s-rS 查询设计器中使用 IF ELSE 语句?

s-s-rS 下拉多值参数可搜索

从 s-s-rS 中的表达式将参数传递给数据集