我需要获得前3个月的总分。也就是说,如果我看四月,我会得到1月,2月,3月的总和。同样,当我看Jan时,它会显示上一年10月,11月,12月的总和。我使用以下查询
SELECT empid,
name,
sum(total) AS total
FROM formresult
WHERE (MONTH(date) = MONTH(now())
OR MONTH(date) = MONTH(now()- INTERVAL 1 MONTH)
OR MONTH(date) = MONTH(now()- INTERVAL 2 MONTH))
AND YEAR(date) = YEAR(now())
GROUP BY empid
但是当使用这段代码时,我得到了3个月的结果,但是当我看到Jan时,它没有显示上一年的结果。怎么可能呢。请帮帮我
答案 0 :(得分:3)
以下内容应该满足您的需求。
SELECT empid, name, SUM(total) AS total
FROM formresult
WHERE date BETWEEN
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND
LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
GROUP BY empid
有关详细信息,请参阅DATE_FORMAT()
,DATE_SUB()
和LAST_DAY()
。
答案 1 :(得分:0)
因此,日期数学有一些问题在这里完成。首先,看起来你正在获得当前月份和前两个月而不是前三个月。这是为了获得当前月MONTH(date) = MONTH(now())
。此外,您不能假设它是当年,如果您在1月份运行此项,您预计会获得上一年的10月,11月和12月,但它将在当年返回。 / p>