2017-07-25 5 views
-2

以下は単純な結合クエリの出力です。 3つの列はすべて異なる表からのものです。2列の値に基づいて行を拒否する

Col1  Col2  Col3 
Manual Y-Yes  Include 
MC  Y-Yes  Include 
Manual Y-Yes  Exclude 
Manual Y-Yes  Exclude 

私は同じのCol1の値について「除外」は存在しない場合にのみ、「含める」で行を取得する必要があります。

Col1の値に「除外」がない場合は、「含む」と表示されます。

したがって、Col1の値 'Manual'に 'Exclude'が含まれているため、クエリには最初の行が表示されません。

+0

。何を試しましたか? – OldProgrammer

+0

チャールズ・ブレタナ(Charles Bretana)さんにお礼を言いました – One

答えて

1

あなたの質問に英語でどうなるかのように多くのことを見なければならないSQLクエリ: あなたは右、col3値に「除外」が同じcol1値のための行が存在しないすべての行をしたいですか? あなたがテーブルやカラムの名前を提供していないので、私は正確なSQLを与えることはできませんが、すべての3つの列が同じテーブルにいたならば、それは次のようになります。それは読みやすいように、あなたの質問やフォーマットを編集してください

Select * from mytable 
where not exists 
    (select * from mytable 
    where col1 = t.col1 
     and col3 = 'Exclude') 
+0

3つの列はすべて別のテーブルのものです。そして、このクエリは 'Exclude'を含むすべての列を拒否します – One

+0

同じCol1にも 'Exclude'がある場合、クエリは 'Include'を持つ行のみを拒否する必要があります。 – One

+0

3つのテーブルすべてのスキーマを提供してください。そうでなければ、正しいSQL構文でどのように推測するでしょうか?この問合せ(正しい表にアクセスするように変更されている場合)は、要求したとおりに行を除外します。 –

関連する問題