Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL/MySQL:divida um valor de quantidade em várias linhas por data


Caso você decida atualizar para o MySQL 8.0, aqui está um CTE recursivo que irá gerar uma lista de todos os dias entre planning_start_date e planning_end_date juntamente com a quantidade diária necessária:
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`

Demonstração no dbfiddle