0

我有这张桌子:

MonthList (month_name, ticket)

我想获得特定月份发生的次数。

例如在第二季度,我运行以下查询:

SELECT month_name as 'Month', count('Month') as 'Ticket Count' from Monthlist
where month_name in ('May', 'June', 'July') 
group by Month order by Month asc

现在,如果 May 没有行,May 根本不会在结果中返回,我会得到这样的结果:

6月5日

7月10日

我希望上面的列表也包括May 0.

4

1 回答 1

0

为此,您最好在月表(包含月份名称)和票证表(包含票证)之间执行联接。

一个月会有一个整数 ID,tickets 表会有一个链接到months 表的列。

然后,您将执行这样的 SQL 查询。

SELECT
    months.month_name AS 'Month',
    count(tickets.id) AS 'Ticket Count'
FROM
    months
LEFT JOIN
    tickets
ON
    tickets.month_id = months.id
GROUP BY
    months.id

这减少了您在工单表中复制的数据量,并且更加灵活。

上面的查询未经测试,但我很确定应该可以完成这项工作,当然,只要您的数据库具有所需的表。

第二个示例使用月份名称,并按特定月份过滤。

SELECT
    months.month_name AS 'Month',
    count(tickets.id) AS 'Ticket Count'
FROM
    months
LEFT JOIN
    tickets
ON
    tickets.month_name = months.month_name
WHERE
    months.month_name IN ("May","June","July")
GROUP BY
    months.month_name
ORDER BY
    months.month_name ASC
于 2013-06-19T07:51:02.357 回答