Я пытаюсь вставить строки, которых нет в таблице, из которой я получаю данные, она упорядочена по столбцу days_to_cancel и начинается с нуля с новой записью Год / Месяц.Я использую следующий запрос:
CREATE TABLE reporting.tbl_exec_retention_curve_cumulative (days_to_cancel int, cancels int, cumulative_cancels int, enroll_dt varchar(50));
SELECT rc.days_to_cancel,
rc.cancels,
(@run_total := CASE WHEN rc.days_to_cancel <> 0 THEN @run_total +
rc.cancels ELSE rc.cancels END) AS cumulative_cancels,
LEFT(rc.client_enroll_dt,7) AS client_enroll_dt
FROM (SELECT rc.days_to_cancel,
SUM(CASE WHEN rc.client_status = 'CAN' THEN 1 ELSE 0 END) AS cancels,
LEFT(rc.client_enroll_dt,7) AS client_enroll_dt
FROM t1.table rc
GROUP BY 1,3
ORDER BY 3,1
) rc
JOIN (SELECT @run_total := 0) r
GROUP BY 1,4
ORDER BY 4,1;
Я получаю пример результата следующего
days_to_cancel | cancels | cumulative_cancels | client_enroll_dt
---------------+---------+--------------------+------------------
42 | 2 | 376 | 2019-02
47 | 0 | 376 | 2019-02
0 | 0 | 0 | 2019-03
10 | 4 | 4 | 2019-03
11 | 9 | 13 | 2019-03
Поэтому моя цель - ввести пропущенные дни и использовать предыдущие значения cumulative_cancels и enroll_dtи 0 для столбца отмены при вводе этой новой строки для этих пропущенных дней.Я пробовал несколько способов, включая использование переменных, но я не знаю, что делать.Я не знаю, возможно ли это, учитывая, что строки никогда не существовали.Если это имеет значение, я нахожусь на версии 10.0.35 MariaDB.