前年度との比較(SQL Server 2005版)
こっちとほとんど一緒だけど、日付関数とかに違いがある。
MySQL版だと、
-- 同じ月は対象外 (month(now()) <> month(E.doc_date)) AND ( -- 前年度の対象範囲は・・・ E.doc_date BETWEEN -- 前年度の4月1日から concat(year(now()) - CASE WHEN month(now()) IN (1, 2, 3) THEN 2 ELSE 1 END, '-4-1') AND -- 前年度の今日まで date_sub(now(), interval CASE WHEN month(now()) IN (1, 2, 3) THEN 2 ELSE 1 END year) OR -- 今年度の範囲も前年度と同様 E.doc_date BETWEEN concat(year(now()) - CASE WHEN month(now()) IN (1, 2, 3) THEN 1 ELSE 0 END, '-4-1') AND date_sub(now(), interval CASE WHEN month(now()) IN (1, 2, 3) THEN 1 ELSE 0 END year) )
こうだったけど、SQL Server 2005では
-- 同じ月は対象外 (month(getdate()) <> month(E.doc_date)) AND ( -- 前年度の対象範囲は・・・ E.doc_date BETWEEN -- 前年度の4月1日から cast( cast( year(getdate()) - CASE WHEN month(getdate()) IN (1, 2, 3) THEN 2 ELSE 1 END AS char(4) ) + '-4-1' AS datetime ) AND -- 前年度の今日まで dateadd(year, CASE WHEN month(getdate()) IN (1, 2, 3) THEN -2 ELSE -1 END, getdate()) OR -- 今年度の範囲も前年度と同様 E.doc_date BETWEEN cast( cast( year(getdate()) - CASE WHEN month(getdate()) IN (1, 2, 3) THEN 1 ELSE 0 END AS char(4) ) + '-4-1' AS datetime ) AND dateadd(year, CASE WHEN month(getdate()) IN (1, 2, 3) THEN -1 ELSE 0 END, getdate()) )
こんな感じ?
例によって試してない。