[英]SQL CASE WHEN for multiple values in multiple columns
我查看了其他可能与此类似的问题,但我面临的问题有点不同,我找不到任何方法来解决我正在尝试做的事情。
我有两列,品牌和类别。 我必须根据适合该角色的品牌或类别的值为客户 ID 分配一个值。
下面是我的代码 -
CREATE TABLE database.customer_audience_labeled
AS
select m.cust_id, CASE
WHEN (m.category IN ('cat_1','cat_2') OR m.brand_id IN ('brand_1','brand_2')) THEN "Sports_Enthusiast"
WHEN (m.category IN ('cat_4','cat_5') OR m.brand_id IN ('brand_3')) THEN "Jewellery_Shoppers"
WHEN (m.category IN ('cat_7') OR m.brand_id IN ('brand_4','brand_5')) THEN "Movie_Goers"
ELSE "Others"
END AS Custom_Audience
FROM customer_table m
GROUP BY 1
我在 Athena (Presto DB) 中执行此操作,但出现以下错误 -
SYNTAX_ERROR: line 6:702: Column 'gym_goers' cannot be resolved. You may need to manually clean the data at location 's3://aws....'
也许你只是想要:
CREATE TABLE database.customer_audience_labeled AS
SELECT m.cust_id,
(CASE WHEN (m.category IN ('cat_1','cat_2') OR m.brand_id IN ('brand_1','brand_2')) THEN 'Sports_Enthusiast'
WHEN (m.category IN ('cat_4','cat_5') OR m.brand_id IN ('brand_3')) THEN 'Jewellery_Shoppers'
WHEN (m.category IN ('cat_7') OR m.brand_id IN ('brand_4','brand_5')) THEN 'Movie_Goers'
ELSE 'Others'
END) AS Custom_Audience
FROM customer_table m
GROUP BY 1, 2;
还要注意对字符串常量使用单引号而不是双引号。
我不确定原因是什么,但 OR 语句不起作用。
我删除了 OR 语句并将它们移到附加的 WHEN 语句中,它给了我结果。
CREATE TABLE database.customer_audience_labeled AS
SELECT m.cust_id,
CASE WHEN m.category IN ('cat_1','cat_2') THEN 'Sports_Enthusiast'
WHEN m.brand_id IN ('brand_1','brand_2') THEN 'Sports_Enthusiast'
WHEN m.category IN ('cat_4','cat_5') THEN 'Jewellery_Shoppers'
WHEN m.brand_id IN ('brand_3') THEN 'Jewellery_Shoppers'
WHEN m.category IN ('cat_7') THEN 'Movie_Goers'
WHEN m.brand_id IN ('brand_4','brand_5') THEN 'Movie_Goers'
ELSE 'Others'
END AS Custom_Audience
FROM customer_table m
GROUP BY 1, 2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.