在使用两个字段应用“分组依据”之后,出现重复的行。如何将相似的行分组?

时间:2018-08-16 07:22:07

标签: mysql

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);

这是我的代码。

this is the table

现在,我要将相似的受让人分组在一起。

1 个答案:

答案 0 :(得分: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。该查询的编写也将更加简单。