Hi JJ
       The error message you are seeing now is because of your usage of 
groupby. You need to specify it as 'group by' , a space between group and by. 
Even if you specify it as 'group by' the query wont execute because of a 
limitation with GROUP BY in hive. It would give some parse error as 'Expression 
not in GROUP BY key'. For details refer the JIRA  2099 which is still open

https://issues.apache.org/jira/browse/HIVE-2099

But here you can gracefully achieve your goal with the usage of a Temporary 
View, as given below


CREATE VIEW temp_view_1 AS
SELECT A,
CASE
 WHEN B IN(1,2) THEN 'Type A'
 ELSE 'Type B'
END AS B,
C from table_a;


SELECT * FROM temp_view_1GROUP BY A,B,C;

DROP VIEW temp_view_1;

The creation and usage of views won't create much significant overhead on your 
query execution as well. 

Hope it helps !...

Regards
Bejoy.K.S




________________________________
 From: Mapred Learn <mapred.le...@gmail.com>
To: user@hive.apache.org 
Sent: Sunday, December 4, 2011 2:51 PM
Subject: hive case and group-by statement
 

Hi,
I have a following smaple query:
 
select
A,
CASE
 WHEN B IN(1,2) THEN 'Type A'
 ELSE 'Type B'
END AS B,
C
from table_a
groupby
A, B, C;
 
But when i run this query, it gives error:
FAILED: Error in semantic analysis: Line 95:0 Invalid table alias or column 
reference entity

 
This error is from B defined after 'AS' in CASE statement.
 
how can I make this group-by work ?
 
Thanks,
-JJ

Reply via email to