我正在尝试汇总上个月键入(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/