仅在满足条件时添加附加过滤器

问题描述 投票:0回答:2

当满足我的条件时,即当 reg_number = '22162' 时,我尝试应用额外的过滤器,我必须再次使用 mdate = '2023-10-20' 进行过滤,否则我不想使用 mdate 进行过滤,而只想使用 reg_number 进行过滤='13352'

代码如下:

SELECT * FROM car_details
WHERE reg_number LIKE
  CASE WHEN @reg_number = '22162' THEN 
    '22162' AND mdate = '2023-10-20'
  ELSE
    '13352'
  END

但是我收到如下错误:

TYPE_MISMATCH: line 15:5: Logical expression term must evaluate to a boolean (actual: varchar(5))
sql amazon-athena
2个回答
2
投票

使用

OR

SELECT * FROM car_details
WHERE (reg_number = '22162' AND mdate = '2023-10-20')
OR reg_number = '13352'

0
投票

CASE
语句不返回布尔值。它返回一个值,该值要么是
THEN
子句的结果,要么是
ELSE
子句的结果。

您可以将查询重新构造为:

Select *
From car_details
Where
(reg_number = '22162' and mdate = '2023-10-20') or
(reg_number = '13352' and @reg_number != '22162')

reg_number
'22162'
时,也会用
mdate = '2023-10-20'
进行过滤,其他情况下,只会用
reg_number = '13352'

进行过滤
© www.soinside.com 2019 - 2024. All rights reserved.