示例:
一、表结构及测试数据:
CREATE TABLE tst (
testDate date,
testSum INT
);
INSERT INTO tst VALUES ( '2014-01-01', 1);
INSERT INTO tst VALUES ( '2014-01-02', 3);
INSERT INTO tst VALUES ( '2014-01-02', 4);
INSERT INTO tst VALUES ( '2014-01-03', 5);
INSERT INTO tst VALUES ( '2014-01-05', 9);
INSERT INTO tst VALUES ( '2014-01-06', 11);
INSERT INTO tst VALUES ( '2014-01-07', 13);
二、SQL执行语句:
SELECT
t2.all_day AS `日期`,
IFNULL(SUM(testSum), 0) AS `合计数量`,
COUNT(testSum) AS `出现行数`
FROM
(
SELECT
@rownum :=@rownum + 1 AS NO,
DATE_ADD(
'2014-01-01',
INTERVAL @rownum DAY
) AS all_day
FROM
(SELECT @rownum := -1) r_init,
tst
) t2
LEFT JOIN tst ON (
t2.all_day = DATE(tst.testDate)
)
WHERE
t2.all_day >= '2014-01-01'
AND t2.all_day <= '2014-01-07'
GROUP BY
t2.all_day;
三、运行结果: