我正在尝试汇总上个月键入(SET)的金额

结构如下:

CREATE TABLE tester (
date_amount date,
amount int);


INSERT INTO tester VALUES
("2014-08-01", 1000),
("2014-08-02", 1001),
("2014-08-03", 1002),
("2014-08-31", 2000),
("2014-08-31", 2000),
("2014-08-31", 2000),
("2014-09-01", 1006);


这里以示例为例

如果我输入year = 2014且month = 9,则在这种情况下,我应自动求和该月的最后一天的总和,即“ 2014-08-31”中的所有金额

这是demo

SET @month := 09;
SET @year := 2014;

select sum(amount) from tester
where   month(date_amount)= @month-1


查询必须将上一月最后一天输入的所有金额相加

结果,我必须这样:

SUM(AMOUNT)
6000


我尝试了此方法,但不是正确的方法,因为在这里我知道该月的最后一天:

SET @month := 09;
SET @year := 2014;

select sum(amount) from tester
where   month(date_amount)= @month-1 and day(date_amount)= 31


我也尝试了此查询,但得到了NULL

SET @month := 09;
SET @year := 2014;

SELECT sum(amount)FROM tester
WHERE month(date_amount)= @month-1 AND day(date_amount) =last_day(day(date_amount))


请有人可以帮助我吗?

最佳答案

不仅仅是提供月份和年份,而是提供实际日期,然后您可以获得所需的结果

SET @month := 09;
SET @year := 2014;

SELECT sum(amount)FROM tester
WHERE month(date_amount)= @month-1 AND day(date_amount) = day(last_day(date_amount))


或者,您可以使用STR_TO_DATE首先转换给定日期的月份和年份,然后使用它代替@Date

关于mysql - 如何汇总上个月的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26410228/

10-10 16:39