You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL的WHERE子句中用IF/CASE语句实现分阶段门店筛选

SQL WHERE子句实现分阶段门店过滤方案

不用嵌套IF/CASE,直接用逻辑运算符组合条件是更简洁高效的方式,以下是两种实现方式:

方式一:直接逻辑组合(推荐)

这种写法直观易懂,SQL优化器也更容易处理:

WHERE
  1=1
  AND (
    -- 第一阶段:2022年8月,仅门店1
    (DATE BETWEEN 20220801 AND 20220831 AND STORE = 1)
    -- 第二阶段:2022年9月,门店1、2、3
    OR (DATE BETWEEN 20220901 AND 20220930 AND STORE IN (1, 2, 3))
    -- 第三阶段:2022年10月及以后,所有门店
    OR (DATE >= 20221001)
  )

方式二:使用CASE语句(可选)

如果一定要用CASE,也可以这样写,但可读性和性能不如上面的方式:

WHERE
  1=1
  AND (
    CASE
      WHEN DATE BETWEEN 20220801 AND 20220831 THEN STORE = 1
      WHEN DATE BETWEEN 20220901 AND 20220930 THEN STORE IN (1, 2, 3)
      WHEN DATE >= 20221001 THEN TRUE
      ELSE FALSE -- 可根据需求调整日期在20220801之前的过滤规则
    END
  )

注意事项

如果DATE字段是标准日期类型(如DATE、DATETIME),建议使用日期字符串格式(比如'2022-08-01')替代数字,避免因类型转换导致的性能问题或错误。

内容的提问来源于stack exchange,提问作者keo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:10:31