MySQL的类似if else 的判断

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')


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值