sql - 如何找到状态为 9 但仍没有状态 10 的数据
问题描述
select slog.filename, doc.d , doc.sap_id
from document_state doc, serv_log slog
where
doc.exeid = slog.exeid
and doc.timestamp < TRUNC(SYSDATE) - 1
and doc.timestamp> TRUNC(SYSDATE) - 55
and doc.document_status = 9
and slog.exeid not in (
select exeid from document_state
where document_status >= 10
)
group by
slog.strs_filename,
doc.sys_id,
doc.sap_id;
我写了这个查询来查找状态为 9 而没有状态 10 的数据,但是我执行了我的查询并且花了很长时间,有什么想法可以加快这个查询
解决方案
一个having
子句不是做你想要的吗?
select l.filename, d.sysid, d.sap_id
from document_state d
inner join serv_log l on d.exeid = l.exeid
where
d.timestamp < trunc(sysdate) - 1
and d.timestamp> trunc(sysdate) - 55
and d.document_status in (9, 10)
group by s.strs_filename, d.sys_id, d.sap_id
having max(d.document_status) = 9
注意我doc.d
在select
子句中用替换了doc.sysid
,所以子句和select
子句是一致的group by
。
推荐阅读
- python - Seaborn Scatterplot - 订购 X 轴标签
- apache-flink - 哪种语言更适合使用 Flink 进行流式处理?
- reactjs - 渲染组件与返回 JSX 的函数的优势 [React]
- java - 如何使用 Spring Data Jpa 和 postgres 中的索引使我的本机查询更快
- elasticsearch - 如何使用 elasticsearch 查询和获取部分属性
- ios - UIStackviews 中的视图宽度不明确
- r - 在多个数据框之间找到匹配的值组合?r
- html - 我在材质上使用 angular 10,我收到了这个错误 ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked
- excel - 如何选择数据透视表的范围?
- python - 线程时出现 msgbox 错误,GUI 块