在我的SQL Server报告中,我需要基于多个参数筛选数据.具体地说,我希望根据一个参数的值在WHERE子句中应用不同的条件,然后判断另一个参数以确定过滤逻辑.

例如,我希望检索参数1与某个值匹配的数据,然后根据该数据对参数2求值,如果它满足某个条件,则执行一组条件,如果不满足,则执行另一组条件.

Where 
    case when @Parameter1 = 'value'  then
        ColumnName = @Parameter2
    when case when @Parameter1 = 'value2' then
        ColumnName = @Parameter2
    when case when @Parameter1 = 'value3' then
        ColumnName = @Parameter2
    when case when @Parameter1 = 'value4' then
        ColumnName = @Parameter2

谁能就如何构建WHERE子句以适应SQL Server中的这些条件筛选器提供指导?

推荐答案

我认为你是在try 根据@Parameter1的不同条件动态过滤你的SQL查询.您可以在WHERE子句中使用CASE语句和布尔逻辑的组合.

SELECT *
FROM YourTableName
WHERE 
    CASE 
        WHEN @Parameter1 = 'value' AND ColumnName = @Parameter2 THEN 1
        WHEN @Parameter1 = 'value2' AND ColumnName = @Parameter2 THEN 1
        WHEN @Parameter1 = 'value3' AND ColumnName = @Parameter2 THEN 1
        WHEN @Parameter1 = 'value4' AND ColumnName = @Parameter2 THEN 1
        ELSE 0
    END = 1

您还可以使用OR个条件来判断@Parameter1的不同值,并根据ColumnName = @Parameter2中指定的条件筛选行.

SELECT *
FROM YourTableName
WHERE 
    (@Parameter1 = 'value' AND ColumnName = @Parameter2)
    OR (@Parameter1 = 'value2' AND ColumnName = @Parameter2)
    OR (@Parameter1 = 'value3' AND ColumnName = @Parameter2)
    OR (@Parameter1 = 'value4' AND ColumnName = @Parameter2)

Sql相关问答推荐

Postgres,使用iLike运算符从json数组中搜索的工作方式与从常规表中搜索不同

在SQL中创建一个计数器,根据BigQuery/SQL中的条件递归地添加行值

有没有办法用SQL编写一条CASE语句,如果列A&>0,那么列B,列C=0

在SQL查询中使用COALESS

PostgreSQL抽奖查询

从列中提取子字符串的ORDER BY CASE语句

如何计算给定日期前三个月的值以及月初数据?

基于是否具有某些数据的关联表覆盖SELECT语句中的列值

ColdFusion+Docker:未安装SQLSERVER包

同时插入和更新记录

配置单元查询失败:无法识别';附近的输入;LEFT'';(select子句中的';';col'

如何在android房间中进行多个加入

在 Oracle 21c 中透视文本值

SQL Server:时态表并在运行时添加计算列

PostgreSQL:通过数组的元素从另一个表中 Select 数据,然后按顺序显示

计算 SQL 中的总体成功率:递归 CTE 还是替代方法?

添加一列并根据其他列值进行填充

如何在 RavenDB Studio (RQL) 中插入更新文档

pyspark 将列转换为行

在 UTF 编码字符上应用 SQL LIKE 语句没有给出任何结果