为啥不能执行sql case when

关于hql执行带有case when 的语句问题,另:数据表的倒置 - 弹指间幸福5 - 推酷
关于hql执行带有case when 的语句问题,另:数据表的倒置 - 弹指间幸福5
今天在做项目时,需要将数据库中的一个表的数据倒置(行变成列),使用了case when 关键字,说到这里,我也总结一下如何将数据库中的行变为列。
数据倒置:
(case when 太强大了)
1、这有一张礼品寄送表gift_send:
& & & sendid是主键,giftid是礼品的id,num是当前送出去的个数,giftname是礼品的名称。
2、我现在需要统计每个礼品在某一天送出去的数量,如下图:
3、上图的sql语句为:
select time,
sum(case giftid when 6 then num else 0 end) as &10元话费/个& ,
sum(case giftid when 7 then num else 0 end) as &20元话费/个& ,
sum(case giftid when 17 then num else 0 end) as &30元话费/个&
from gift_send
group by time
4、如果想统计在某段时间内每个礼品在某一天送出去的数量,可以加上where或having子句。此sql语句的关键是以时间分组。
5、如果想统计某个礼品在某段时间总共送出去的个数,及对应统计中的“合计”,则将time和group by time去掉,即不以时间分组,sum全部数量。如下图:
6、如果想要统计某天的全部话费的费用,即不管是10元的,20元的,30元的等,全部话费的总和。如下图:
(文章中的排序,标号完全是为了看着方便,没有实际作用)
是不是感觉case when 很强大,通过这样我们就可以做各种统计和合计了,好了,现在转入正题(说这么多了,才开始正题,嘻嘻)
HQL中case when 问题
这么强大的功能,用sql语句是没有问题的,在sqlplus中也可以顺利执行,以上面的为证。可是,我一用HQL语句(将sql中的表名换成hibernate对应的实体),就各种错误。
由于我用的是oracle,所以我写select * from gift_send as g where g.time=''这条语句时,报错:找不到右括号或没有关键字form等,原因是oracle不识别表别名as,起别名直接写在表的后面,去掉成功。
然后就是各种错误,例如:
1、org.hibernate.QueryException: unexpected char: '&'
2、org.hibernate.hql.ast.QuerySyntaxException: unexpected token:
3、at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException
等等,网上查了一上午,没有解决,有人说case when 是sql的关键字,hql不支持,等等,
解决办法:我是将其作为普通的sql语句执行的,用hibernate的createSQLQuery方法。
已发表评论数()
&&登&&&录&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见switch--case的执行顺序
[问题点数:10分,结帖人fohonet]
switch--case的执行顺序
[问题点数:10分,结帖人fohonet]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2007年4月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。奥鹏西交15春《程序设计基础》在线作业100分答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
奥鹏西交15春《程序设计基础》在线作业100分答案
大小:10.15KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢switch语句中为什么少了一个break会执行下面一个case里面的东西
[问题点数:20分]
switch语句中为什么少了一个break会执行下面一个case里面的东西
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2013年3月 C/C++大版内专家分月排行榜第三
2015年5月 Java大版内专家分月排行榜第二2013年5月 Java大版内专家分月排行榜第二
2011年5月 Java大版内专家分月排行榜第三2011年1月 Java大版内专家分月排行榜第三
2014年10月 C/C++大版内专家分月排行榜第三2014年4月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 sql case when 的文章

 

随机推荐