首页 > 其他 > 详细

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i

时间:2014-06-07 15:42:17      阅读:1300      评论:0      收藏:0      [点我收藏+]
hive中执行sql语句:
select pc.category_id, 
sum(case when t.so_month between 3 and 5 then t.order_item_num else 0 end) as spring, 
sum(case when t.so_month between 6 and 8 then t.order_item_num else 0 end) as summer, 
sum(case when t.so_month between 9 and 11 then t.order_item_num else 0 end) as autumn, 
sum(case when t.so_month=12 or t.so_month<=2 then t.order_item_num else 0 end) as winnter 
from product_category pc join (select si.product_id, si.order_item_num, month(si.order_create_time) as so_month from so_item si where si.ds between '2013-05-01' and '2014-04-30' and si.is_gift=0) t on pc.product_id=t.product_id 
group by pc.category_id;
其中t.order_item_num是bigint类型

执行sql,提示错误
“The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "int" is found”

解决办法:
把else后面的0改为0L即可!
select pc.category_id, 
sum(case when t.so_month between 3 and 5 then t.order_item_num else 0L end) as spring, 
sum(case when t.so_month between 6 and 8 then t.order_item_num else 0L end) as summer, 
sum(case when t.so_month between 9 and 11 then t.order_item_num else 0L end) as autumn, 
sum(case when t.so_month=12 or t.so_month<=2 then t.order_item_num else 0L end) as winnter 
from product_category pc join (select si.product_id, si.order_item_num, month(si.order_create_time) as so_month from so_item si where si.ds between '2013-05-01' and '2014-04-30' and si.is_gift=0) t on pc.product_id=t.product_id 
group by pc.category_id;

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i,布布扣,bubuko.com

The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i

原文:http://blog.csdn.net/yeweiouyang/article/details/28445559

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!