3

製品番号、クライアント名、および地域を格納するテーブルがあります。したがって、この 1 つのテーブルを使用して、特定の地域の特定のクライアントのすべての製品を照会できます。

クライアントが 1 つの地域でどの製品を持っているかを確認できるクエリを作成しようとしていますが、他の地域では確認できません (地域の比較)。言い換えれば、特定のクライアントについて、南ではなく北にあるすべての製品と、北ではなく南にあるすべての製品を表示できますか?

2 つの個別のクエリであれば、これは非常に簡単だと確信していますが、1 つのクエリで実行しようとしています。出来ますか?

製品クライアント地域
500 1 北
500 1 南
501 1 ノース
502 1 サウス
503 1 ノース
503 1 サウス

上記のデータの結果は、クライアント 1 が北に製品 501 を持っているが南に持っておらず、南に製品 502 を持っているが北に持っていないことを示しています。製品 500 と 503 は両方のリージョンにあるため無視されます。

製品クライアント地域
501 1 ノース
502 1 サウス
4

5 に答える 5

2

1 つの方法を次に示します。

Select product, client, region
From yourTable t
Where region in('north','south')
  And not exists(
    Select product, client, region
    From yourTable tt
    Where t.region <> tt.region
      And t.client = tt.client
      And t.product = tt.product
    )
于 2013-04-15T17:43:26.910 に答える