У меня есть таблица БД ниже:
TaskId StartDate TargetEnd TaskStatus
1 2011-01-01 2011-02-05 completed
2 2011-02-05 2011-02-05 ongoing
3 2011-02-04 2011-04-04 completed
4 2011-04-04 2011-04-04 completed
5 2011-04-06 2011-04-30 ongoing
Я создал запрос, в котором я могу получить общее количество выполненных и текущих задач в месяц:
SELECT YEAR(TargetEnd) 'YEAR',
MONTHNAME(TargetEnd) 'MONTH',
SUM(IF(TaskStatus = 'ongoing',1,0)) 'ONGOING',
SUM(IF(TaskStatus = 'completed',1,0)) 'COMPLETED',
COUNT(TaskId) 'TOTAL' FROM Task_Table GROUP BY YEAR(TargetEnd), MONTH(TargetEnd)
и результат:
YEAR MONTH ONGOING COMPLETED TOTAL
2011 January 0 1 1
2011 February 0 1 2
2011 April 1 2 3
Но мое требование состоит в том, чтобы добавить задачу № 2 как часть ONGOING
, пока задача все еще «выполняется» с месяца TargetEnd
до текущего месяца (февраль-апрель).Ожидаемое должно быть примерно таким:
YEAR MONTH ONGOING COMPLETED TOTAL
2011 January 0 0 0
2011 February 1 1 1
2011 March 1 0 1
2011 April 2 2 4
Можете ли вы дать мне представление о том, как мне это сделать?Я ценю любую помощь.Спасибо.
Я отредактировал ожидаемый результат выше.В январе не должно было быть никакого подсчета, поскольку оно основано исключительно на месяце TargetEnd .