用于查找一个条件的所有示例的Oracle SQL查询

1yjd4xko  于 2022-12-22  发布在  Oracle
关注(0)|答案(2)|浏览(147)

Oracle数据库中的表具有列PRODUCER、CONSUMER、STATUS和DATE。STATUS的值可以是COMPLETE或FAILED
我正在寻找一个查询,该查询将查找STATUS始终为FAILED的PRODUCER和CONSUMER对的所有示例
例如,如果表中包含
| 生产商|消费者|状态|日期|
| - ------|- ------|- ------|- ------|
| 美国汽车协会|XXX年|完成|2022年1月12日|
| 美国汽车协会|年|未通过|2022年1月12日|
| 美国汽车协会|XXX年|未通过|二〇二二年十二月二日|
| 美国汽车协会|年|未通过|2022年2月12日|
我希望查询返回PRODUCER AAA和CONSUMER YYY,因为它们的STATUS始终为FAILED

bxgwgixi

bxgwgixi1#

或者

select distinct producer, consumer 
from tab t
where status = 'FAILED' and not exists(
    select 1 from tab t1 where t.producer = t1.producer and t.consumer = t1.consumer and t1.status = 'COMPLETE'
);

或者

select producer, consumer
from tab
group by producer, consumer having( count(1) = count(case when status = 'FAILED' then 1 end));

等等。

fdx2calv

fdx2calv2#

我觉得用集合论可能更容易解决这个问题-

SELECT PRODUCER, CONSUMER
  FROM your_table
 WHERE STATUS = 'FAILED'
 MINUS
SELECT PRODUCER, CONSUMER
  FROM your_table
 WHERE STATUS <> 'FAILED';

相关问题