数据库的case when 使用实例


本文作者:苏生米沿

本文地址:http://blog.csdn.net/sushengmiyan/article/details/50471210

需求非常easy,我有一个部门和部门的请假申请表。表数据简单罗列例如以下:



申请信息存放在sqxx这张表中,然后存放了zybm和zybm相应的部门信息,有个部门表bmxx,想查询開始结束时间间隔为半天的(时差小于4就可以)和大于半天的(按一天算)以部门为单位的统计结果,效果例如以下:


今天学了一个运行语句。顺利实现。感觉还是棒棒哒。

select sqbm, (select bmmc from bmxx b where b.bm=a.sqbm) as bmmc,
sum(case when A.hasdata <>'' and timestampdiff(HOUR,kssj,jssj)<=4 then 1 else 0 end) as bt,
sum(case when  A.hasdata <>'' AND timestampdiff(HOUR,kssj,jssj) <=4 then 1 else 0 end) as qt
from clgl_ycsqxx a  group by a.sqbm;

这个语句首先去关联了部门表,查询了部门名称,然后依据日期间隔,case when推断了小于4小时的记录个数和大于4小时的记录个数。

最后依据部门分组。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值