当我收到错误“列无法解析”时,我是否应该添加另一个 Group By 语句?

问题描述

我的查询运行良好,但在添加 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 中提取数据时,一切正常。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...