ここでは、1つの行に1年間のすべての結果を表示する代わりの方法があります。
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
すべての研究を終了しましたか? https://www.google.com/search?q=mysql+get+rows+for+month+for+which+no+data+existsなどのようなものがありますか? – CBroe
追加ボーナス?私はそれが基本的な要件だと思ったでしょう:-( – Strawberry