获取SQL中没有不完整状态的ID

时间:2018-04-24 04:52:27

标签: sql oracle

我在下面使用这些数据,并且我只想提取没有不完整的ID或'我'状态。

ID  SUBJECT   STATUS
1   Math        C
1   Physics     C
1   Chemistry   I
2   Math        I
2   Physics     C
2   Chemistry   I
3   Math        C
3   Physics     C
3   Chemistry   C

你如何在SQL中编码,其中只有ID#3被拉,因为它是唯一一个没有' I'在其状态。

3 个答案:

答案 0 :(得分:4)

您可以使用not exists

select * 
from table t
where not exists (select 1 from table where id = t.id and STATUS = 'I');

您也可以使用group by重新表达:

select id 
from table
group by id
having count(distinct STATUS) = 1 and
       sum(case when STATUS <> 'C' then 1 else 0 end) = 0;

答案 1 :(得分:2)

你可以使用&#34; NOT IN&#34;

Report_No       Rank
18  3229        1
89-0119-87      2
180261292       3
180261292       3
18  3107        4
18A 7     A06   5
T18002415       6
T18002415       6
T18002415       6
0000000018-519  7
0000000018-519  7
0000000018-519  7
0000000018-519  7
0000000018-655  8
000000018-1002  9
000000018-1002  9
000000018-1002  9
000000018-5712  10

答案 2 :(得分:0)

您也可以这样做,

SELECT id
  FROM tablename
 GROUP BY id
HAVING MIN(status) = MAX(status)
   AND MIN(status) = 'C';
/