用于多列中的多个值的SQL情况

用于多列中的多个值的SQL情况,sql,list,amazon-web-services,select,presto,Sql,List,Amazon Web Services,Select,Presto,我看了其他可能与此类似的问题,但我面临的问题有点不同,我找不到任何方法来解决我试图做的事情 我有两个专栏,品牌和类别。我必须根据品牌或类别的价值为客户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 ('

我看了其他可能与此类似的问题,但我面临的问题有点不同,我找不到任何方法来解决我试图做的事情

我有两个专栏,品牌和类别。我必须根据品牌或类别的价值为客户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

我在雅典娜(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;

第二列不是聚合的一部分。很不清楚你想做什么。示例数据、期望的结果和清晰的解释都会有所帮助。我在SQL中看到
Custom\u-academy
,在错误消息中看到
Custom\u-academy\u-brand
。打字错误?是的,事实上我复制了之前的错误-这是错误
语法错误:第6:702行:列“健身者”无法解决。
@GordonLinoff-刚刚附加了一个数据示例图像,我正在尝试解决的问题我得到以下错误消息-
输入时没有可行的替代方案
@lightyagami96。这很奇怪。此查询未使用关键字,并且没有数据类型冲突。