ショボ短歌会

sql初心者です。
タイトルどおりですが、sqlserverで以下のように対象のレコードを抽出したいのですがうまくいきません。
お手数ですがご教授ください。

【テーブル】
No キー  区分
1 001   2
2 001   1
3 002   2
4 002   2
5 001   null

【抽出条件】
同一キー単位で区分1と2が混在している場合は区分1のレコードのみ抽出する。(区分2のレコードは対象外)
上記以外は一律抽出する。

抽出対象 →No.2,3,4,5
抽出対象外→No.1

質問者からの補足コメント

  • 上記はSELECT文で解決しましたが、逆にテーブルから区分1,2のデータで区分2を削除(DELETE文)したいのですがなかなか実現できません。度々申し訳ありませんがアドバイスお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/08/23 17:52

A 回答 (1件)

SELECT A.* FROM テーブル A


WHERE NOT(A.区分 = 2 AND EXISTS(SELECT 1 FROM テーブル B WHERE A.キー = B.キー AND B.区分 = 1))

でいかがでしょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答いただいた文で解決しました。
勉強になりました、ありがとうございます。

お礼日時:2018/08/23 16:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す