我想检查我的客户是否拥有iPhone,iPad或Macbook。 我不是在寻找一个客户拥有多少iPhone,iPad或Macbook,我只是想确定他们是否拥有其中任何一个,或者是否拥有两个,或者是否拥有全部三个。
我正在考虑使用CASE WHEN
函数,这是查询:
select customer
, case when AppleProduct = 'iPhone' THEN 'TRUE' ELSE 'FALSE END AS Owns_iPhone
, case when AppleProduct = 'iPad' THEN 'TRUE' ELSE 'FALSE AS Owns_iPad
, case when AppleProduct = 'Macbook' THEN 'TRUE' ELSE 'FALSE' AS Owns_Macbook
from Apple_Product_Ownership
这是我想要得到的结果
customer | Owns_iPhone | Owns_iPad | Owns_Macbook
X TRUE TRUE FALSE
Y FALSE TRUE TRUE
Z TRUE FALSE FALSE
但这就是我要得到的
customer | Owns_iPhone | Owns_iPad | Owns_Macbook
X TRUE FALSE FALSE
X FALSE TRUE FALSE
Y FALSE TRUE FALSE
Y FALSE FALSE TRUE
Z TRUE FALSE FALSE
答案 0 :(得分:0)
您正在寻找条件聚合。我会将您的查询表达为:
select
customer,
logical_or(AppleProduct = 'iPhone') Owns_iPhone,
logical_or(AppleProduct = 'iPad') Owns_iPad,
logical_or(AppleProduct = 'Macbook') Owns_Macbook,
from Apple_Product_Ownership
group by customer