SQL/MySQL: split a quantity value into multiple rows by date(SQL/MySQL:按日期将数量值拆分为多行)
                            本文介绍了SQL/MySQL:按日期将数量值拆分为多行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我有一个包含三列的表:planning_start_date - planning_end_date - quantity。
例如,我有以下数据:
 planning_start_date | planning_end_date | quantity
          2019-03-01 |        2019-03-31 |     1500
我需要使用每天的副词将值1500拆分成多行,因此1500/31天=每天48,38。
预期结果应为:
date         daily_qty
2019-03-01 |     48,38
2019-03-02 |     48,38
2019-03-03 |     48,38
...
2019-03-31 |     48,38
有人有什么建议吗?
推荐答案
如果您决定升级到MySQL8.0,这里有一个递归CTE,它将生成planning_start_date到planning_end_date之间的所有天数的列表以及所需的每日数量:
WITH RECURSIVE cte AS (
    SELECT planning_start_date AS date, 
           planning_end_date, 
           quantity / (DATEDIFF(planning_end_date, planning_start_date) + 1) AS daily_qty
    FROM test
    UNION ALL
    SELECT date + INTERVAL 1 DAY, planning_end_date, daily_qty
    FROM cte
    WHERE date < planning_end_date
)
SELECT `date`, daily_qty
FROM cte
ORDER BY `date`
Demo on dbfiddle
这篇关于SQL/MySQL:按日期将数量值拆分为多行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:SQL/MySQL:按日期将数量值拆分为多行
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
 - ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
 - 从字符串 TSQL 中获取数字 2021-01-01
 - 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
 - while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
 - CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
 - 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
 - 带有WHERE子句的LAG()函数 2022-01-01
 - MySQL 5.7参照时间戳生成日期列 2022-01-01
 - 带更新的 sqlite CTE 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				