where语句中的过滤器不适用于oracle查询

filters in where statement not working for oracle query

在我的 oracle 查询中:

Select
d.LVL_NAME
,d.SCHEDULE_DESC
,d.SCHEDULE_TYPE
,s.DUE_DTTM
,s.WARNING_DTTM
,s.DELINQUENT_DTTM
,d.EST_WORK_DURATION
,d.EST_WORK_DURATION_UNIT
,l.ENTITY_GRP
from smsdw.TW_SCHEDULE_DEF d
RIGHT OUTER JOIN
smsdw.TW_ENTITY_SCHED s on
d.LVL_NAME = s.ENTITY
LEFT OUTER JOIN smsdw.TW_ENTITY_GRP_LST l on
s.ENTITY = l.ENTITY

WHERE l.ENTITY_GRP NOT LIKE '%Wet%' 
  AND l.ENTITY_GRP LIKE 'Implant%' or l.ENTITY_GRP LIKE 'Thermal%' 
  and s.DUE_DTTM between sysdate and sysdate +30 ;

我不知道如何让“NOT LIKE WET”和“sysdate”过滤器在我的 WHERE 语句中起作用。 有什么想法吗? 我插入了结果的图像。

我已经尝试了许多通过谷歌搜索找到的不同方法,但我仍然得到与我的问题中列出的相同的结果。

在您的 OR 周围添加 ()。假设所有 ANDS 都适用于整个集合。

WHERE l.ENTITY_GRP NOT LIKE '%Wet%' 
  AND (l.ENTITY_GRP LIKE 'Implant%' or l.ENTITY_GRP LIKE 'Thermal%')
  AND s.DUE_DTTM between sysdate and sysdate +30 ;

发生的事情是 OR 说带回任何像热的组,不管它是否像湿的并且不在 due_dttm 日期范围内。