Oracle SQL -如果至少有一个特定条件不满足,则需要删除数据

3ks5zfa0  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(172)

我的问题是关于Oracle sql的,我有两个表,一个是study表,另一个是study part表,study表的主键是styno,studypart表的主键是(styno + sqncno)。
例如:studypart表包含以下数据。

studyNo sqnc   part   approvalIN 
--------------------------------
123     1       fgh    Y     
123     2       jhf    N
123     3       rty    N
456     1       wer    N
456     2       wdg    N
456     3       ghg    N

我需要以这样一种方式进行查询,即我从studypart表中输出的结果为研究编号,其中所有approvalIn均为N。如果至少有一个approvalIn为“Y”,则该研究编号应从结果中排除。
所需输出:研究编号:456
我在存储过程中尝试了这种实现,分别取Y和N approvalIn计数,即,如果一个研究没有两个计数,则排除它,如果它只有一个计数,则说N或Y包括它。但我想知道如何实现这是查询。

xmd2e60i

xmd2e60i1#

您可以通过排除“approvalIN = 'N'”计数与“approvalIN”值的总数不匹配的行来执行此操作。

SELECT STUDYNO
FROM tab
GROUP BY STUDYNO
HAVING SUM(CASE WHEN approvalIN = 'N' THEN 1 END) = COUNT(approvalIN)

检查演示here

相关问题