MySql - цикл по датам в месяц для каждой строки - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть 2 таблицы.Один из них - Таблица заданий (главная), а другой - таблица Распределения (транзакции).Для каждой работы мне нужно распечатать количество ассигнований, выполненных за каждый день в месяце.

Мне нужно напечатать количество ассигнований в следующем формате.

Link to image

Я пробовал это использовать цикл while в хранимой процедуре.Но это не помогло.

BEGIN

SET @start_day = DATE('2018-11-01');
SET @end_day = DATE_ADD(@start_day, INTERVAL 30 DAY);

SELECT 
job_id into @job_id
FROM 
jobs
WHERE
job_post_date BETWEEN @start_day AND @end_day;

WHILE(@start_day < @end_day) DO
 SELECT COUNT(allocation_id) FROM allocations WHERE allocations_job_id = 
@job_id AND allocations_assigned_date = @start_day;
 SET @start_day = DATE_ADD(@start_day, INTERVAL 1 DAY);
END WHILE;

END

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы можете создать динамический sql, выполняя циклы для всего количества дней для рассматриваемого месяца, это должно решить вашу проблему.Динамический sql должен выглядеть как

select j.job_name,
       sum(case when a.allocations_assigned_date = '2019-01-01' 
                then 1 else 0 end) as "1-JAN-2019",
       sum(case when a.allocations_assigned_date = '2019-01-02' 
                then 1 else 0 end) as "2-JAN-2019",
       sum(case when a.allocations_assigned_date = '2019-01-31' 
                then 1 else 0 end) as "31-JAN-2019"
  from jobs j inner join allocations a 
    on j.job_id = a.allocations_job_id
 group by j.job_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...