表A
日期 笔数
2014-1-1 1
2014-1-2 5
2014-1-3 6
2014-2-1 1
2014-2-12 12
2014-2-17 6
2014-3-7 6
想得到这个结果
年 月 这月笔数 历史笔数
2014 1 12 0
2014 2 19 12
2014 3 6 21
这样的语句怎么写,求高手
select year(a.日期
) as '年',month(a.日期
) as '月',sum(a.笔数
) as '这月笔数',
(select IFNULL(sum(b.笔数
),0) from total b
where year(a.日期
) = year(b.日期
)
and month(a.日期
) > month(b.日期
)
) as '历史笔数'
from total a
group by year(a.日期
),month(a.日期
);
如果报:only full group错误
则使用:set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
http://www.cnblogs.com/Fooo/p/3435687.html
下次先百度!
SELECT YEAR(c.日期),MONTH(c.日期),SUM(c.笔数),(SELECT SUM(l.笔数) FROM tablename l
WHERE YEAR(l.日期)=YEAR(c.日期) AND MONTH(l.日期)< MONTH(c.日期)) FROM tablename c
GROUP BY YEAR(c.日期),MONTH(c.日期)
不知道是否合用,mysql语句,轻喷!
表结构
--create table CSDN(
-- datetimes datetime ,
-- pens int,
--)
查询结果
SELECT YEAR(datetimes) AS Y,MONTH(DATETIMES) AS M ,SUM(pens)AS NOW,(SELECT SUM(pens)FROM CSDN B WHERE YEAR(A.datetimes)=YEAR(B.datetimes)AND MONTH(B.datetimes)<MONTH(A.datetimes)) AS OLD
FROM CSDN A group by year(datetimes),MONTH(datetimes)