2011-06-29 16 views
1

顧客IDが1つのテーブルとタイムゾーンが別のテーブルにある場合、異なるタイムゾーン値を持つすべての顧客IDを選択できるプレーンSQLステートメントがありますか?言い換えれば、ニューヨーク、シカゴ、サンフランシスコにオフィスを持つ顧客を見つけたいと思いますが、1つのタイムゾーンにのみオフィスを持つ顧客は探しません。単一列の複数の値を選択するバニラSQL

答えて

3
SELECT Customer 
FROM MyTable 
GROUP BY Customer 
HAVING COUNT(DISTINCT TimeZone) > 1 

DISTINCTの使用が重要です。

COUNT(TimeZone)は、別個の値だけでなく、すべての非NULL値をカウントします。したがって、TimeZoneがnullの場合を除いて、COUNT(*)と同等です。すなわち

、所与の顧客三のオフィスを有しているが、すべての東部タイムゾーンにある場合、COUNT(DISTINCTタイムゾーン)が異なるために1

+0

+1となり、一方、COUNT(タイムゾーン)は、3になります。また、私は自分の答えを修正して修正しました:) – JNK

1
SELECT Customer 
FROM MyTable 
GROUP BY Customer 
HAVING COUNT(DISTINCT TimeZone) > 1 
醜いが、効果的な
0

select CustomerID 
where CustomerID in 
(
select customerID from 
    (select distinct CustomerID 
    from table 
    where TimeZone in ('NY','CHI','SF')) t 
having count(*) = 3 
) 
関連する問題