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

SQL WHERE子句条件调整需求咨询:排除STA_0='1'的NCC类型数据

调整WHERE子句以满足需求

首先,咱们先明确原语句的问题:你当前的WHERE子句因为逻辑运算符优先级的问题,导致OR条件没有和前面的AND条件关联起来。原语句的实际逻辑是:

(ACCDAT_0 >= '2020-01-01' AND STA_0='3' AND NUM_0 LIKE '%FTC%') OR NUM_0 LIKE '%NCC%' OR NUM_0 LIKE '%DCF%'

这就导致只要NUM_0匹配%NCC%或%DCF%,不管STA_0是什么值,都会被纳入结果,这就是STA_0='1'的NCC记录被选中的原因。

接下来是调整后的WHERE子句,完全满足你的需求:

WHERE 
  -- 保留原有符合条件的记录:日期达标、状态为3,且NUM含FTC/DCF
  (
    ACCDAT_0 >= '2020-01-01 00:00:00.000' 
    AND STA_0 = '3' 
    AND (NUM_0 LIKE '%FTC%' OR NUM_0 LIKE '%DCF%')
  )
  -- 新增NCC规则:所有含NCC的记录,但排除STA=1的条目
  OR 
  (
    NUM_0 LIKE '%NCC%' 
    AND STA_0 != '1'
  )

逻辑拆解:

  • 第一部分括号内是修正后的原有查询逻辑:把NUM_0 LIKE '%FTC%' OR NUM_0 LIKE '%DCF%'包裹在括号里,确保这两个条件必须和ACCDAT_0、STA_0='3'同时满足,避免了原语句的逻辑漏洞。
  • 第二部分专门处理NCC的需求:只要NUM_0包含NCC,并且STA_0不等于1,就会被选中——这部分不受STA_0='3'和日期条件的限制(如果需要让NCC记录也满足日期要求,只需在这部分加上ACCDAT_0 >= '2020-01-01 00:00:00.000'即可)。

如果需要NCC记录也满足日期条件,调整后的语句如下:

WHERE 
  (
    ACCDAT_0 >= '2020-01-01 00:00:00.000' 
    AND STA_0 = '3' 
    AND (NUM_0 LIKE '%FTC%' OR NUM_0 LIKE '%DCF%')
  )
  OR 
  (
    NUM_0 LIKE '%NCC%' 
    AND STA_0 != '1'
    AND ACCDAT_0 >= '2020-01-01 00:00:00.000'
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:42:38