我的查询运行得很好,但是在添加了一个case语句之后,我在一些列上收到了一个错误。
使用case语句查询我在以下位置收到错误:
select
date_,
afs,
sum(price) as Customer_price,
sum(cost) as store_cost,
pos_vd,
product
CASE
WHEN f.afs='C' and f.product in ('Blue','Pink','Yellow')
THEN 'Special'
ELSE 'PRODUCT GROUP NOT MAPPED' END as ProductGroup
from pie.crust f
where
date_ >= 201801 and
pos_vd = 'Stop'
Group By
date_,
afs,
pos_vd,
product,
CASE
WHEN f.afs='C' and f.product in ('Blue','Pink','Yellow')
THEN 'Special'
ELSE 'PRODUCT GROUP NOT MAPPED' END
下面是我收到错误的字段。当我删除字段时,查询使用case语句,但我需要在数据提取中使用该字段。我尝试在Group By下添加case语句,但它不起作用。我一直收到类似“无法接收列‘价格’”的错误:
sum(price),
sum(cost)
发布于 2021-02-02 12:52:39
您不能在group by
中指定别名。从group by
中删除别名,我也不认为group by
中需要聚合函数。
您应该删除以下聚合函数。
sum(cnt) as CNT,
sum(amt) as AMT,
sum(price) as Customer_price,
sum(cost) as store_cost,
而且你可以在没有别名的group by
中使用case..when
。
CASE
WHEN f.afs='C' and f.product in ('Blue','Pink','Yellow')
THEN 'Special'
ELSE 'PRODUCT GROUP NOT MAPPED' END -- no alias
发布于 2021-02-02 22:17:33
你好,我解决了这个问题。
这个表最初是用色调创建的,所以当我尝试在Presto中添加case语句并拉出聚合函数时,它不会工作。我返回到Hive中的原始表,并在其中添加了case语句。现在,当我从Presto中提取数据时,一切都正常。
https://stackoverflow.com/questions/66003784
复制相似问题