簡體   English   中英

在單列中選擇多個值的香草 SQL

[英]Vanilla SQL that selects multiple values in single column

如果我有一張表,其中一列中有客戶 ID,另一列有時區,是否有一個普通的 SQL 語句可以 select 所有具有不同時區值的客戶 ID? 換句話說,我想找到那些在紐約、芝加哥和舊金山設有辦事處的客戶,而不是那些只在一個或其他時區設有辦事處的客戶。

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

DISTINCT 的使用很重要。

COUNT(TimeZone) 計算所有非空值,而不僅僅是不同的值。 所以它等價於 COUNT(*),除了 TimeZone 是 null。

換句話說,如果給定客戶有三個辦事處,但都在東部時區,則 COUNT(TimeZone) 將為 3,而 COUNT(DISTINCT TimeZone) 將為 1。

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

丑陋但有效:

select CustomerID
where  CustomerID in 
(
select customerID from
     (select distinct CustomerID
     from   table
     where  TimeZone in ('NY','CHI','SF')) t
having count(*) = 3
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM