列Aに複数の列Bが1つ以上含まれているレコードをフィルタするクエリを作成する方法?SQL - どの列の値が別の列の値と複数の組み合わせを持つレコードレコード
名簿
staffno | location | date
----------------------------
sf001 | A | 1/10/2016
sf001 | A | 2/10/2016
sf001 | A | 3/10/2016
sf002 | A | 1/10/2016
sf002 | B | 2/10/2016
sf002 | A | 3/10/2016
sf003 | A | 1/10/2016
sf003 | A | 2/10/2016
sf003 | A | 3/10/2016
staffprofile私は見つけることが文を書いた
staffno
-------
sf001
sf002
sf003
sf004
:
は、2つのテーブルがあります:私は、下記の例により、より良い方法で問題を説明します「職員」と「所在地」の組み合わせが1つ以上あるスタッフを除外します。例えば、テーブル "ロスター"では、staffno "sf002"は複数の場所 "A"と "B"を持つので、staffno "sf002"は結果から除外されるべきです。 staffno "sf001"は単一の場所 "A"しか持たないので、これも含まれています。
は、私は次の文を書いた:sf001とsf003:select staffno
from roster a, staffprofile b
where a.staffno = b.staffno
and not exists (
--some stmt here
)
結果は2つのレコードを持っている必要があります。
元は、「NOT EXISTS」を使用して、フィールドstaffnoと場所の複数の組み合わせでこれらのレコードをフィルタリングしたいと思いましたが、それらの不要なレコードを照会することはできませんでした。また、「ケース・ア・イズ」を使用しようとしましたが、異なる「ロケーション」を持つ「スタッフ・ノー」が繰り返されているものをチェックするためのステートメントを書くことに失敗しました。
さらに高度なクエリは、同じ月にレコードを持つことに加えて、上記の条件のレコードを見つけることになります。ここで
SQLサーバー2005年以降、TABLE1から 'table2'をあなたの構文をサポートしていません。 [明示的な結合](http://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins)を使用する必要があります – JohnHC
@JohnHC - 'SQL SERVER 2016 'でもコンマで区切って結合します。 –