1

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

4

3 に答える 3

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

DISTINCTの使用は重要です。

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

つまり、特定の顧客に3つのオフィスがあり、すべてが東部タイムゾーンにある場合、COUNT(TimeZone)は3になり、COUNT(DISTINCT TimeZone)は1になります。

于 2011-06-29T20:13:56.630 に答える
1
SELECT Customer
FROM MyTable
GROUP BY Customer
HAVING COUNT(DISTINCT TimeZone) > 1
于 2011-06-29T20:11:28.587 に答える
0

醜いが効果的:

select CustomerID
where  CustomerID in 
(
select customerID from
     (select distinct CustomerID
     from   table
     where  TimeZone in ('NY','CHI','SF')) t
having count(*) = 3
)
于 2011-06-29T20:13:38.883 に答える