以下のSQLを12か月間(4月12日、5月12日、6月12日... 4月13日)実行する必要がありますが、SQLを何度も実行したり書き直したりしたくありません。再帰cteの一部としてこれを行う方法があるかどうかを把握しようとしています..月の日付が正しいことを確認する必要があります(隔月ごとに30/31日、2月は28日です)。
ここに私のSQLがあります
Select
--Month of Apr 2012
(Select 1.0 * 100 *
(
Select COUNT(*)
from B b
left outer join F f on f.id = b.id
Where f.date1 < '05/01/2012' and
(f.date2 between '04/01/2012' and '04/30/2012' or f.date2 is Null)
)
/
(Select COUNT(*)
from f
Where date1 < '05/01/2012' and
(date2 between '04/01/2013' and '04/30/2013' or date2 is Null)) as 'Apr 2012',
--Month of May 2012
(Select 1.0 * 100 *
(
Select COUNT(*)
from B b
left outer join F f on f.id = b.id
Where f.date1 < '06/01/2012' and
(f.date2 between '05/01/2012' and '05/31/2012' or f.date2 is Null)
)
/
(Select COUNT(*)
from f
Where date1 < '06/01/2012' and
(date2 between '05/01/2013' and '05/31/2013' or date2 is Null)) as 'May 2012'