【发布时间】:2017-10-12 01:30:45
【问题描述】:
我有一个数据库,其中有一个表格来保存报告。每个报告都有一个日期(年-月-日),在创建报告时设置。
经过大量测试,我得到了一些工作,但不是我希望它工作。
我想获取从初始日期(年-月-日)到最终日期(年-月-日)每个月生成的报告数量。但我不太确定如何完成它。
这是我现在使用的 MySQL 语句:
SELECT meses.month id_mes, count(re_fecha) total
FROM
(
SELECT 1 AS MONTH
UNION SELECT 2 AS MONTH
UNION SELECT 3 AS MONTH
UNION SELECT 4 AS MONTH
UNION SELECT 5 AS MONTH
UNION SELECT 6 AS MONTH
UNION SELECT 7 AS MONTH
UNION SELECT 8 AS MONTH
UNION SELECT 9 AS MONTH
UNION SELECT 10 AS MONTH
UNION SELECT 11 AS MONTH
UNION SELECT 12 AS MONTH
) as meses
LEFT JOIN reportes ON month(re_fecha) = meses.MONTH
WHERE re_fecha BETWEEN '2017-01-01' AND '2017-08-31'
GROUP BY meses.MONTH, monthName(re_fecha)
这是我使用 MySQL 语句得到的以下结果:
id_mes | total
---------------
04 | 15
05 | 5
06 | 15
07 | 2
我不确定这是否有任何帮助,但如果我不使用“where re_fechas...”,我会得到更接近我们所寻找的结果:
id_mes | total
-------------
01 | 0
02 | 0
03 | 0
04 | 15
05 | 5
06 | 15
07 | 2
08 | 6
09 | 0
10 | 0
11 | 0
12 | 0
最后,我想看看:
id_mes | total
-------------------
01-2017 | 0
02-2017 | 0
03-2017 | 0
04-2017 | 15
05-2017 | 5
06-2017 | 15
07-2017 | 2
08-2017 | 6
我现在的工作方式有两个问题:
当我使用句子“where”时,在指定日期有 0 个报告的月份不会显示。如果我不使用“where”,我会以我想要的方式得到东西,但不是在我想要的日期范围内。
我遇到的另一个问题是我想获取月份中的年份(如上面所需的代码块所示)。
我希望这是足够的信息来理解一切,我不确定我是否可以提供数据库,但如果你认为这会有所帮助,请告诉我。
【问题讨论】: