2017-01-16 7 views
0

私は1つのテーブルの交差を取得したいと思います。 私のテーブルは、いくつかの市場に現れる製品を指定しています。どのように私は場所AとB(例えば、このリンゴ)にある製品を得ることができますか?1つのテーブルからの交点

SELECT product 
FROM yourTable 
WHERE market IN ('location A', 'location B') 
GROUP BY product 
HAVING COUNT(DISTINCT market) = 2 

別の可能性は、条件付きの集約を使用して、特定の市場は、各製品が表示された回数をカウントすることです:ここで

product  market 
apple  location A 
apple  location B 
orange  location C 
+0

使用しているSQLのバージョンは? –

+0

私はPL/SQL 11.2を使用していますOracle Database 11g –

答えて

1

は一つの選択肢である

SELECT product 
FROM yourTable 
GROUP BY product 
HAVING SUM(CASE WHEN market = 'location A' THEN 1 ELSE 0 END) > 0 AND -- appears in A 
     SUM(CASE WHEN market = 'location B' THEN 1 ELSE 0 END) > 0  -- appears in B 
+1

あなたの努力に感謝します!これはトリックでした! –

0

あなたは次のように 'INNER JOIN'を介して達成することができます

select t.product 
from product t 
inner join 
     (select product from product where market = 'location A') tt on t.product = tt.product 
where market = 'location B' 
関連する問題