hive中执行sql语句出现的问题

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

hive中执行sql语句出现的问题的相关文章

请大家帮忙-实现使用C#语言,在.net开发平台中执行sql语句

问题描述 实现使用C#语言,在.net开发平台中执行sql语句 实现使用C#语言,在.net开发平台中执行sql语句了,如查询某张表数据,向某张表插入一条数据,在某张表中编辑一条数据,删除某张表的一条数据. 解决方案 给你段代码,你参考一下 using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.W

java-为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行??

问题描述 为什么我在Java类中执行SQL语句,程序没错,而数据库却没执行?? 解决方案 不知道画了删除线是什么意思,你确认这些代码有效么 解决方案二: 你用的什么啊?Hibernate?还是别的框架啊?Hibernate的话,可能是事务没有提交,你执行flush方法就可以了 解决方案三: 代码可以贴全一点吗?看不到关键部分 解决方案四: 代码内容太少了,你的Sqlca是个什么,最起码给个声明. 解决方案五: 你的sqlca是什么啊? 解决方案六: executeSQL方法问题 这个方法只能是查

在c#中执行sql语句时传递参数的小经验

sql|语句|执行 c#中与数据库打交道,免不了要用到各种sql语句,而给sql语句传参数也是不可避免的.以下是我在此方面上的一点总结(高手勿见笑): 1> 直接写入法:      例如:             int Id =1;             string Name="lui";             cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name

java中执行sql语句参数设置问题

问题描述 想问下:java里面:1.String cust_no="123456";StringBuffer qry = new StringBuffer();qry.append(" SELECT * ");qry.append(" FROM TORDERDETAIL ");qry.append(" where CUST_NO =? ");pStmt = conn.prepareStatement(qry.toString(

Shell脚本中执行sql语句操作mysql的5种方法_linux shell

对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 复制代码 代码如下: --演示环境  [[email protected] ~]# more /etc/issue  CentOS release 5.9 (Final)  Kernel \r on an \

在MySQL中执行SQL语句时的几个注意点

在执行查找命令时的大小写问题 默认情况下,MySQL在执行查找时不区分字母的大小写.当你在查找时使用like 'a%'时, 默认将返回以a或者A开头的所有列值,若要在查找时区分大小写,则需要使用collate运算符来实现,具体例子如下: col_name COLLATE latin1_general_cs LIKE 'a%'col_name LIKE 'a%' COLLATE latin1_general_cscol_name COLLATE latin1_bin LIKE 'a%'col_na

如何在nhibernate中执行SQL语句

问题描述 在网上查了很多大部分给出如下代码:publicIListExecuteSQL(stringquery){IListresult=newArrayList();ISessionFactoryImplementors=(ISessionFactoryImplementor)cfg.BuildSessionFactory();IDbCommandcmd=s.ConnectionProvider.Driver.CreateCommand();cmd.CommandText=query;IDbC

在MySQL数据库中使用C执行SQL语句

mysql|数据|数据库|语句|执行 与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据

在MySQL数据库中使用C执行SQL语句(1)

与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C.C++.Java和Perl.从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句.他们将讨论返回数据的语句,例如INSERT以及不返回数据的语句,例如UPDATE和DELETE.然后,他们将编写从数据库检索数据的简单程序. 执行SQL语句 现在,我