hql 中的case when运用查询
来源:互联网 发布:java客户端之间通信 编辑:程序博客网 时间:2024/05/20 02:26
有以下hql:
String hql = "select new com.ks.admin.report.dto.ReportMonthWithDrawalDto(" +"count(*)," +"sum(ct.tradeTotal)," +"sum(case when ct.tradeTotal >= 0 then 1 else 0 end)," +"sum(case when ct.tradeTotal >= 0 then ct.tradeTotal else 0 end)" +") " +"from CustTrade ct " +"where ct.tradeType = 'DR' " +"and ct.tradeTime between ? and ? " +"and ct.tradeDesc like '%提现%'";
count(*)返回的是Long类型,Sum(Double类型)返回Double类型,sum(case when ct.tradeTotal >= ? then ct.1 else 0 end)返回Long类型。
sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思是当ct.tradeTotal>=0的时候会返回1,否则返回0,而sum会累加,因为0累加之后还是0,所以只会返回1的累加之后才会改变值,因此这表示统计ct.tradeTotal>=0的数据总数。为什么不用count呢?因为试验过,count里面无法用条件。
sum(case when ct.tradeTotal >= 0 then ct.tradeTotal else 0 end)的意思是当ct.tradeTotal>=0的时候返回ct.tradeTotal的值,否则返回0,同理,如果条件成立,会累加ct.tradeTotal>=0的值。
如果以上描述有错误,请提出,一起共同学习。
0 0
- hql 中的case when运用查询
- HQL中使用case when
- CASE WHEN 查询
- hibernate hql case when 子查询报java.lang.NullPointerException错误
- Case When在Where可变查询条件中的应用
- sql 中的case when
- oracle中的case when
- mysql中的case,when.........
- sql中的case when
- SQL中的Case when
- mysql,case when else查询
- case when 运用的一点提醒
- hibernate分组与聚合查询(原生sql和使用case when then else end的hql)
- SQL中的CASE WHEN使用
- SQL中的CASE WHEN使用
- sql中的case、when、then
- SQL中的CASE WHEN使用
- sql中的case when 语法
- Git配置和第一次推送项目
- 线性表学习归纳总结三:线性表链式存储 不带头结点
- 设置点击ProgressDialog外的区域对话框不消失
- java开发中的23种设计模式(转)
- WatchKit apps must have a deployment target equal to iOS 8.2 (was 8.3)?
- hql 中的case when运用查询
- Dubbo:来自于阿里巴巴的分布式服务框架
- jndi
- [cmd]查看某端口被占用的程序
- SpringMVC入门学习(三)+Spring应用(整合)
- (3) 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?
- java文件下载
- PAT 1006 相关字符串函数应用
- ORACLE数据库中的表连接关系