首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过去12个月按月分列的记录总数

过去12个月按月分列的记录总数
EN

Stack Overflow用户
提问于 2013-11-03 20:04:45
回答 1查看 3.2K关注 0票数 2

你好,我正在使用这个sql查询根据图表表示的月份获取过去12个月的记录:

代码语言:javascript
复制
SELECT DATE_FORMAT(drives.timestamp, "%b") AS Month,
                         DATE_FORMAT(drives.timestamp, "%d-%m-%Y %H:%i:%s") AS Exact_date,
                         drives.departure,
                         drives.destination,
                         drives.route,
                         CONCAT(drivers.name, " ", drivers.surname) as driver,
                         drivers.id as driver_id
                         FROM drives, drivers WHERE drives.driver = drivers.id 
                         AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH) ORDER BY drives.timestamp Asc

但是,如果一个月没有记录,结果集中将不包括预期的记录,而且我正在使用php进行大量计算以实现我想要的结果。

我的问题是:是否有一种方法可以检索一个简单的结果集,其中包含过去12个月每个月驱动器的总和,如果一个月内有0个驱动器,则还必须包括它--结果集中显示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 20:14:09

您需要使用包含每个月一行的表进行外部连接。假设您没有这样的表,您可以使用硬编码的UNION查询动态创建它:

代码语言:javascript
复制
SELECT * FROM
    (SELECT DATE_FORMAT(now(), "%b") as Month
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 1 MONTH), "%b")
     UNION
     SELECT DATE_FORMAT(now() - INTERVAL 2 MONTH), "%b")
     UNION
     ...
     SELECT DATE_FORMAT(now() - INTERVAL 11 MONTH), "%b")) AS Months
LEFT JOIN (SELECT DATE_FORMAT(drives.timestamp, "%b") AS Month,
                 drives.timestamp,
                 DATE_FORMAT(drives.timestamp, "%d-%m-%Y %H:%i:%s") AS Exact_date,
                 drives.departure,
                 drives.destination,
                 drives.route,
                 CONCAT(drivers.name, " ", drivers.surname) as driver,
                 drivers.id as driver_id
                 FROM drives, drivers WHERE drives.driver = drivers.id 
                 AND drives.timestamp > DATE_SUB(now(), INTERVAL 12 MONTH)) data
ON Months.Month = data.Month
ORDER BY data.timestamp

没有记录的任何月份在数据列中都会有一行NULL

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19757458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档