Mysql会计周期查询

最近写MySQL会计周期查询的时候,一条语句写出来很繁琐,于是简化而一下步骤

1、使用临时表

-- 并不需要删除可以把结束时间设置为十年后一次性计算出来
drop table date_period; 
-- 创建临时表
CREATE TEMPORARY TABLE date_period
AS (
	WITH RECURSIVE date_range AS (
	  SELECT DATE('2019-01-26') AS start_date, DATE('2019-02-25') AS end_date
	  UNION ALL
	  SELECT DATE_ADD(end_date, INTERVAL 1 DAY), DATE_ADD(end_date, INTERVAL 1 MONTH)
	  FROM date_range
	  WHERE end_date < CURDATE()
	)
	SELECT
	  start_date,
	  end_date,
	  DATE_FORMAT(DATE_ADD(start_date, INTERVAL 1 MONTH), '%Y-%m') AS month_start
	FROM date_range
);
-- 查询临时表数据
select * from date_period;

2、使用临时表关联

-- 关联查询
SELECT
	t.start_date,t.end_date,t.month_start,SUM( output ) AS total_quantity 
FROM
	date_period t
	JOIN you_table u ON u.data_day >= t.start_date AND u.data_day <= t.end_date 
-- WHERE 如果有条件接条件即可
GROUP BY
	t.start_date,
	t.end_date,
	t.month_start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值