The expression after ELSE should have the same type as those after THEN: "bigint" is expected but "i
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;
本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/tools/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sum
, 语句
, case
, when
, else
BETWEEN
shell执行hive语句、hive sql 循环语句、hive 分页sql语句、hive sql语句、hive sql in 语句,以便于您获取更多的相关知识。
时间: 2016-01-17