- ベストアンサー
ある条件を持たないレコードの抽出
下記のようなデータがあります。 col1 col2 ========== 001 AAA 001 BBB 001 CCC 002 AAA 002 CCC 003 BBB 003 CCC 004 AAA col2 にBBB を持たないレコードを抽出したいのですが どのようにSQLを記述すればよいかご教授ください。 得たい結果 002 004 どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
BBBを含むCol1を求めて、そのCol1をふくまない条件を指定すればよいです。 create table TableName ( col1 varchar2(3), col2 varchar2(3) ); insert into TableName values('001', 'AAA'); insert into TableName values('001', 'BBB'); insert into TableName values('001', 'CCC'); insert into TableName values('002', 'AAA'); insert into TableName values('002', 'CCC'); insert into TableName values('003', 'BBB'); insert into TableName values('003', 'CCC'); insert into TableName values('004', 'AAA'); select distinct col1 from TableName where col1 not in ( select col1 from TableName where col2 = 'BBB' ) order by col1; COL1 ---- 002 004
その他の回答 (2)
- nora1962
- ベストアンサー率60% (431/717)
select distinct col1 from テーブル t1 where not exists ( select 1 from テーブル t2 where t1.col1=t2.col1 and t2.col2 = 'BBB') もありかと。
お礼
有難うございます。勉強になります。
- yamada_g
- ベストアンサー率68% (258/374)
いろんな書き方があると思いますが、 select col1 from テーブル group by col1 having count(case when col2='BBB' then 1 else null end) = 0; とかでしょうか。
お礼
どうも有り難うございました。
お礼
どうも有り難うございました。