SELECT
jiraissue.Assignee,
CASE WHEN MONTH(jiraissue.RESOLUTIONDATE) = 4 THEN COUNT(jiraissue.ID) END AS '/04/2018',
CASE WHEN MONTH(jiraissue.RESOLUTIONDATE) = 5 THEN COUNT(jiraissue.ID) END AS '/05/2018',
CASE WHEN MONTH(jiraissue.RESOLUTIONDATE) = 6 THEN COUNT(jiraissue.ID) END AS '/06/2018',
CASE WHEN MONTH(jiraissue.RESOLUTIONDATE) = 7 THEN COUNT(jiraissue.ID) END AS '/07/2018'
FROM jiraissue
JOIN resolution resolution
ON jiraissue.Resolution = resolution.ID
JOIN issuetype issuetype
ON jiraissue.issuetype = issuetype.ID
JOIN issuestatus issuestatus
ON jiraissue.issuestatus = issuestatus.ID
WHERE
issuestatus.pname IN ('Closed') AND
resolution.pname IN ('Fixed', 'Done') AND
issuetype.pname IN ('Minor Enhancement', 'Root Cause Analysis', 'Support Demand Request')
GROUP BY
Assignee,
MONTH(jiraissue.RESOLUTIONDATE);
Это мой код.
Теперь я хочу, чтобы аналогичный Assignee был сгруппирован вместе.
Вы пытаетесь сделать сводный запрос. Вот версия, которая должна работать:
SELECT
jiraissue.Assignee,
COUNT(CASE WHEN MONTH(j.RESOLUTIONDATE) = 4 THEN 1 END) AS '/04/2018',
COUNT(CASE WHEN MONTH(j.RESOLUTIONDATE) = 5 THEN 1 END) AS '/05/2018',
COUNT(CASE WHEN MONTH(j.RESOLUTIONDATE) = 6 THEN 1 END) AS '/06/2018',
COUNT(CASE WHEN MONTH(j.RESOLUTIONDATE) = 7 THEN 1 END) AS '/07/2018'
FROM jiraissue j
INNER JOIN resolution r
ON j.Resolution = r.ID
INNER JOIN issuetype it
ON j.issuetype = it.ID
INNER JOIN issuestatus is
ON j.issuestatus = is.ID
WHERE
is.pname = 'Closed' AND
r.pname IN ('Fixed','Done') AND
it.pname IN ('Minor Enhancement', 'Root Cause Analysis', 'Support Demand Request')
GROUP BY
j.Assignee;
Основная идея запроса заключается в том, что мы принимаем условные подсчеты в зависимости от месяца даты разрешения.
Обратите внимание, что если вам будет хорошо, если бы каждый месяц сообщался как отдельная строка (а не столбец), вы могли бы просто сделать GROUP BY
у правопреемника и месяца. Этот запрос также будет немного проще писать.
,month(jiraissue.RESOLUTIONDATE)
из вашейgroup by
предложению