问题描述
我的查询运行良好,但在添加 case 语句后,我在某些列中收到错误。
QUERY 带有我收到错误的 case 语句:
s1
以下是我收到错误的字段。当我删除字段时,查询会使用 case 语句,但我需要在数据拉取中使用该字段。我尝试在 Group By 下添加 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_,product,CASE
WHEN f.afs='C' and f.product in ('Blue','Yellow')
THEN 'Special'
ELSE 'PRODUCT GROUP NOT MAPPED' END
解决方法
您不能在 group by
中指定别名。从 group by
中删除别名,而且我认为 group by
中不需要聚合函数。
您应该删除以下聚合函数。
sum(cnt) as CNT,sum(amt) as AMT,sum(price) as Customer_price,sum(cost) as store_cost,
并且您可以在没有别名的情况下在 case..when
中使用 group by
。
CASE
WHEN f.afs='C' and f.product in ('Blue','Pink','Yellow')
THEN 'Special'
ELSE 'PRODUCT GROUP NOT MAPPED' END -- no alias
,
你好,我解决了这个问题。
该表最初是在 HUE 中创建的,因此当我尝试在 Presto 中添加 case 语句并提取聚合函数时,它不起作用。我回到 Hive 中的原始表并在那里添加了 case 语句。现在,当我从 Presto 中提取数据时,一切正常。