MySQL的类似if else 的判断
2016-01-14 14:09
627 查看
CASE WHEN
...条件
THEN
...结果
ELSE
LEFT( monthDate,4) 左截取4个字符或RIGHT(monthDate,4)右截取4个字符,可以用这个对日期进行分组。
DATE_FORMAT(NOW(),'%Y')日期的格式化,如果需要对日期分组时,不要用这个,会出问题的。
SELECT monDate,f1, n1 FROM (SELECT DATE_FORMAT(d1,'%Y-%m') AS monDate ,SUM(f1) as f1 ,SUM(n1) as n1 FROM (SELECT t.date AS d1, (SUM(CASE WHEN t.num = 2 THEN t.FLOW_IN
ELSE (t.FLOW_IN)*2 END) + SUM(CASE WHEN t.num = 2 THEN t.FLOW_OUT ELSE (t.FLOW_OUT)*2 END)) AS f1 FROM (SELECT COUNT(pk) AS num, DATE(DATE) AS DATE ,
SUM(FLOW_IN)/2 AS FLOW_IN , SUM(FLOW_OUT)/2 AS FLOW_OUT FROM moa_control_flow WHERE 1=1 GROUP BY DATE(DATE) ORDER BY
DATE ASC ) AS t WHERE 1 = 1 GROUP BY t.date) AS f, (SELECT t.date AS d2, SUM(CASE WHEN t.num = 2 THEN t.num_sum
ELSE (t.num_sum)*2 END) AS n1, SUM(CASE WHEN t.num = 2 THEN t.num_in ELSE (t.num_in)*2 END) AS n2, SUM(CASE
WHEN t.num = 2 THEN t.num_out ELSE (t.num_out)*2 END) AS n3 FROM (SELECT COUNT(pk) AS num, DATE(DATE) AS DATE ,
SUM(num_sum)/2 AS num_sum , SUM(num_in)/2 AS num_in, SUM(num_out)/2 AS num_out FROM moa_control_session_conn
WHERE 1=1 GROUP BY DATE(DATE) ORDER BY DATE ASC ) AS t WHERE 1 = 1 GROUP BY t.date ) AS c WHERE f.d1=c.d2 GROUP BY LEFT(d1,7)) AS t
where LEFT(t.monDate,4) = DATE_FORMAT(NOW(),'%Y')
...条件
THEN
...结果
ELSE
LEFT( monthDate,4) 左截取4个字符或RIGHT(monthDate,4)右截取4个字符,可以用这个对日期进行分组。
DATE_FORMAT(NOW(),'%Y')日期的格式化,如果需要对日期分组时,不要用这个,会出问题的。
SELECT monDate,f1, n1 FROM (SELECT DATE_FORMAT(d1,'%Y-%m') AS monDate ,SUM(f1) as f1 ,SUM(n1) as n1 FROM (SELECT t.date AS d1, (SUM(CASE WHEN t.num = 2 THEN t.FLOW_IN
ELSE (t.FLOW_IN)*2 END) + SUM(CASE WHEN t.num = 2 THEN t.FLOW_OUT ELSE (t.FLOW_OUT)*2 END)) AS f1 FROM (SELECT COUNT(pk) AS num, DATE(DATE) AS DATE ,
SUM(FLOW_IN)/2 AS FLOW_IN , SUM(FLOW_OUT)/2 AS FLOW_OUT FROM moa_control_flow WHERE 1=1 GROUP BY DATE(DATE) ORDER BY
DATE ASC ) AS t WHERE 1 = 1 GROUP BY t.date) AS f, (SELECT t.date AS d2, SUM(CASE WHEN t.num = 2 THEN t.num_sum
ELSE (t.num_sum)*2 END) AS n1, SUM(CASE WHEN t.num = 2 THEN t.num_in ELSE (t.num_in)*2 END) AS n2, SUM(CASE
WHEN t.num = 2 THEN t.num_out ELSE (t.num_out)*2 END) AS n3 FROM (SELECT COUNT(pk) AS num, DATE(DATE) AS DATE ,
SUM(num_sum)/2 AS num_sum , SUM(num_in)/2 AS num_in, SUM(num_out)/2 AS num_out FROM moa_control_session_conn
WHERE 1=1 GROUP BY DATE(DATE) ORDER BY DATE ASC ) AS t WHERE 1 = 1 GROUP BY t.date ) AS c WHERE f.d1=c.d2 GROUP BY LEFT(d1,7)) AS t
where LEFT(t.monDate,4) = DATE_FORMAT(NOW(),'%Y')
相关文章推荐
- 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
- ubuntu的mysql安装文档
- mysql的日志及利用mysqldump备份及还原
- mysql的日志及利用mysqldump备份及还原
- MySQL批量更新批量替换,REPLACE关键字
- mysql数据库跨服务器迁移
- MyBatis学习总结(12)——Mybatis+Mysql分页查询
- MyBatis学习总结(12)——Mybatis+Mysql分页查询
- MyBatis学习总结(12)——Mybatis+Mysql分页查询
- MYSQL的锁介绍,以及死锁发生情况-带例子
- 脚本自动安装单实例mysql
- mysql升级步骤
- mysql中or和in的效率问题
- 全国各城市的代码邮编sql(mysql版)
- 如何查看mysql 默认端口号和修改端口号
- 后端分布式系列:分布式存储-MySQL 数据库事务与复制
- MySQL存储过程详解
- mysql 创建库时指定编码
- mysql主键怎么恢复从1开始呀
- mysql中容易混淆的地方