首页 > 解决方案 > SQL如何设置这个where子句来检查两个不同的字段?

问题描述

我在具有参数 OrderType 的 SSRS 中设置报告

此参数选中“允许多个值”框

这是我为可用值设置的内容。

Label        Value

Blanketed    B
Shipped      S
Open         O

用户可以选择全部三个或只选择两个或一个

我想向用户展示他选择的订单类型。问题是,这些订单类型的值被分成两个字段。

是否被覆盖在字段 Order_Type 下,是否发货或打开在 Order_Status 下。

我将如何设置这个 where 子句?

这就是我在伪代码中寻找的东西

Select * from Orders O
Where (CASE WHEN @OrderType Contains 'B' THEN O.Order_Type_Code = 'B')
or (CASE WHEN @OrderType Contains 'S' THEN O.Order_Status = 45)
or (CASE WHEN @OrderType Contains 'N' THEN O.Order_Status = 10 or 20)

标签: sqlsql-server

解决方案


像这样的东西可能会起作用(虽然我没有测试过):

SELECT *
FROM   Orders o
WHERE  (@OrderType LIKE '%B%' AND o.Order_Type_Code = 'B')
   OR  (@OrderType LIKE '%S%' AND o.Order_Status = 45)
   OR  (@OrderType LIKE '%N%' AND o.Order_Status IN (10, 20));

推荐阅读