sql - 如何过滤条件为真至少一次
问题描述
我需要过滤到仅在至少一项任务中具有“服务”工作组值的服务订单。但是,如果至少有一个任务行具有该值,我不想删除不是 work group = "Service" 的行。最终结果将忽略服务订单中没有至少一个等于“SERVICE”的 BI_WRKFLW_TASK_KEY 的所有数据。我知道如何做普通的过滤器,但让它达到这种特殊性超出了我目前的经验。
我已经尝试了普通过滤器,但它们遗漏了属于同一服务订单但没有该工作组的行。
SELECT W.BI_WRKFLW_KEY,
T.BI_WORK_EVENT_CD,
T.BI_TASK_CD,
T.BI_WORKGRP,
**M.BI_SO_NBR**,
M.BI_SO_TYPE_CD,
M.BI_CLOSE_DT,
M.BI_OPEN_DT,
M.BI_SO_STAT_CD,
R.BI_WRKFLW_TMPLT_NM,
T.BI_WRKFLW_TASK_SEQ_NBR,
T.BI_WORKGRP,
A.BI_WORK_EVENT_CD,
A.BI_EVENT_DT_TM,
A.SY_JOB_QUEUE_ID,
**A.BI_WORKGRP**,
A.SY_USER_ID,
**A.BI_WRKFLW_TASK_KEY**
FROM BI_WRKFLW W
LEFT JOIN BI_WRKFLW_TASKS T ON W.BI_WRKFLW_KEY = T.BI_WRKFLW_KEY
LEFT JOIN BI_SO_DET D ON W.BI_WRKFLW_KEY = D.BI_WRKFLW_KEY
LEFT JOIN BI_SO_MASTER M ON D.BI_SO_NBR = M.BI_SO_NBR
LEFT JOIN BI_WRKFLW_TMPLT_REF R ON W.BI_WRKFLW_TMPLT_ID = R.BI_WRKFLW_TMPLT_ID
LEFT JOIN BI_TASK_ACT A ON T.BI_WRKFLW_TASKS_KEY = A.BI_WRKFLW_TASKS_KEY
WHERE M.BI_OPEN_DT >= ADD_MONTHS(CURRENT_DATE, -'12')
--AND M.BI_SO_TYPE_CD IN ('IVC-NEW1')
--AND M.BI_SO_STAT_CD LIKE 'O'
ORDER BY M.BI_SO_NBR, T.BI_EVENT_DT_TM
任何服务订单至少有一个 BI_WRKFLOW_TASK_CD = "Service" 的服务订单行将被保留,所有其他服务订单都将被过滤掉。
解决方案
我试着把它画出来,我可能不太正确,
我认为您正在要求 BI_SO_MASTER 记录具有 >=1 BI_WRKFLW_TASKS 属于某个组。
尝试使用 CTE 获取具有正确任务的详细信息行,然后您可以找到 SO 人口...然后您可以???不确定最终结果集目标是什么?
;with matchingTasks as ( D.BI_SO_NBR, D.<id> , W.BI_WRKFLW_KEY , T.<key> , A.Key
from BI_WRKFLW W
LEFT JOIN BI_WRKFLW_TASKS T ON W.BI_WRKFLW_KEY = T.BI_WRKFLW_KEY
LEFT JOIN BI_SO_DET D ON W.BI_WRKFLW_KEY = D.BI_WRKFLW_KEY
LEFT JOIN BI_TASK_ACT A ON T.BI_WRKFLW_TASKS_KEY = A.BI_WRKFLW_TASKS_KEYW
Where
<good dates>
and <A.field is what I am looking for>
)
/*Here you have the SO population
as well as the ids that helped this SO qualify.
*/
, My_SO_Population as (select Distinct BI_SO_NBR from matchingTasks )
/*now you can go get what you need.
the challenge of finding SOs w/ >=1 matching task has been solved...
*/
select <necessary fields> from
My_SO_Population
join <whatever you need....this is where i am cloudy>
如果我错过了目标,请告诉我在哪里......
推荐阅读
- vuex - 如何通过以原子设计模式发射从 vuetify select 中获得更改的值?
- java - 如何让 Java Frame 对象在 Reset 方法中使用?
- php - 在Laravel中根据同一个数据库表中的其他数据检索数据
- java - 有字符串 "naveen" ,希望输出为 "eennav"
- javascript - 猫鼬中的同步和异步与回调
- xml - 如何在 apache camel 中从源路由器动态获取值到目标路由器(这里源是 kafka 主题,目标是休息端点))
- shell - 使用 Shell.FlyoutHeader 删除 Xamarin.Forms Shell 的 Humberger 菜单中的自动生成按钮
- scala - Spark MapPartition NullPointerException 错误
- typescript - Typescript 基于嵌套成员推断父类型
- node.js - Nodejs:请求以不完整的数据结束