После применения 'group by' с использованием двух полей появляются повторяющиеся строки. Как сгруппировать похожие строки?

0
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 был сгруппирован вместе.

  • 0
    Если я правильно понимаю ваш вопрос, вам просто нужно удалить ,month(jiraissue.RESOLUTIONDATE) из вашей group by предложению
  • 0
    Привет, Ник! Спасибо за Ваш быстрый ответ, но я хочу, чтобы результаты также группировались по месяцам, поэтому я не могу удалить это
Показать ещё 3 комментария
Теги:

1 ответ

0
Лучший ответ

Вы пытаетесь сделать сводный запрос. Вот версия, которая должна работать:

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 у правопреемника и месяца. Этот запрос также будет немного проще писать.

  • 0
    Спасибо, Тим .... хотя у меня нет репутации, чтобы отказаться от голосования, но вы это заслужили

Ещё вопросы

Сообщество Overcoder
Наверх
Меню