私は1つのテーブルを持っています(ただし、多くの場所にあります):
DATE STUFF
-------------------
2011-12-01 DATA
2011-12-02 DATA
2011-12-03 DATA
...
2011-12-31 DATA
2012-01-01 DATA
2012-01-02 DATA
私のテーブルは 2005 年から 2012 年までの複数の年をカバーしています。各年の各月の AGGREGATE 関数の値、つまり SUM/AVG/MAX/MIN を取得したいと考えています。簡単:
GROUP BY DATE_FORMAT(DATE, '%Y'), DATE_FORMAT(DATE, '%m')
私はそれらの年の 3 か月の期間について同じことをしたいです...これは 1 つを除くすべてで機能します:
GROUP BY DATE_FORMAT(DATE, '%Y'), DATE_FORMAT(DATE, '%m') IN (12, 01, 02)
私の他の期間は、同じ年 (03, 04, 05)、(06, 07, 08)、および (09, 10, 11) にあるため、機能します...しかし、上記の GROUP BY は 2012 年 12 月をグループ化しています私の期間は、2011 年 12 月と 2012 年 1 月/2 月、2010 年 12 月と 2011 年 1 月/2 月でなければなりません... ...
この汎用性を維持したいので、複数の場所のストアド プロシージャにコードを配置するために、日付範囲で更新する必要はありません。
MONTH 12 の場合、1 年先の年を 1 つずらして、表を自分自身に結合しようとしました。これにより、望ましくない結果が生じました。