这是一种替代方法,可连续显示当年的所有结果。
SELECT
SUM(if(MONTH(receiveDate) = 1, 1,0)) as Jan,
SUM(if(MONTH(receiveDate) = 2, 1,0)) as Feb,
SUM(if(MONTH(receiveDate) = 3, 1,0)) as Mar,
SUM(if(MONTH(receiveDate) = 4, 1,0)) as Apr,
SUM(if(MONTH(receiveDate) = 5, 1,0)) as May,
SUM(if(MONTH(receiveDate) = 6, 1,0)) as Jun,
SUM(if(MONTH(receiveDate) = 7, 1,0)) as Jul,
SUM(if(MONTH(receiveDate) = 8, 1,0)) as Aug,
SUM(if(MONTH(receiveDate) = 9, 1,0)) as Sep,
SUM(if(MONTH(receiveDate) = 10, 1,0)) as Oct,
SUM(if(MONTH(receiveDate) = 11, 1,0)) as Nov,
SUM(if(MONTH(receiveDate) = 12, 1,0)) as `Dec`
FROM test
WHERE YEAR(receiveDate) = '2012'
AND type = 'Blood'
结果是
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
3 0 1 0 2 1 2 0 0 0 0 2
如果您想在一年中报告不止一种类型
SELECT type,
SUM(if(MONTH(receiveDate) = 1, 1,0)) as Jan,
SUM(if(MONTH(receiveDate) = 2, 1,0)) as Feb,
SUM(if(MONTH(receiveDate) = 3, 1,0)) as Mar,
SUM(if(MONTH(receiveDate) = 4, 1,0)) as Apr,
SUM(if(MONTH(receiveDate) = 5, 1,0)) as May,
SUM(if(MONTH(receiveDate) = 6, 1,0)) as Jun,
SUM(if(MONTH(receiveDate) = 7, 1,0)) as Jul,
SUM(if(MONTH(receiveDate) = 8, 1,0)) as Aug,
SUM(if(MONTH(receiveDate) = 9, 1,0)) as Sep,
SUM(if(MONTH(receiveDate) = 10, 1,0)) as Oct,
SUM(if(MONTH(receiveDate) = 11, 1,0)) as Nov,
SUM(if(MONTH(receiveDate) = 12, 1,0)) as `Dec`
FROM test
WHERE YEAR(receiveDate) = '2012'
GROUP by type;
结果是:
type Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Blood 3 0 1 0 2 1 2 0 0 0 0 2
Sweat 2 1 0 0 1 0 0 0 0 0 0 0
Tears 0 0 1 2 0 0 0 0 0 0 0 0