case when語句的運用
背景:根據資料表裡的延期繳費開始時間及月數,將費用分攤在每個月上
--年份,月份,月數
select * ,case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=1 then p.money/p.month
else 0
end as mon0,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=1 then p.money/p.month
else 0
end end as mon1,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end
end end as mon2,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end as mon3,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end as mon4,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end
end end as mon5,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end as mon6,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=8 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end end as mon7,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=9 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=8 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end end end as mon8,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=10 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=9 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=8 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end end end end as mon9,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=11 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=10 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=9 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=8 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+10,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end end end end end as mon10,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=12 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=11 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=10 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=9 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=8 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=7 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=6 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=5 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=4 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=3 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+10,GETDATE())) and p.month>=2 then p.money/p.month
else case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+11,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end end end end end end end end end end end as mon11
from Park_monthcard p where CreateTime >='2018-05-24 00:00:00' and PayStatus=1 --AND carNo LIKE '%3F314%' OR carNo LIKE '%D59D%'
由於case when 只能巢狀10層,故改進後:
--改進 case只能巢狀到10層
--年份,月份,月數
select * ,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=1 then p.money/p.month
else 0
end as mon0,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=1 then p.money/p.month
else 0
end as mon1,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=1 then p.money/p.month
else 0
end as mon2,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon3,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon4,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon5,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon6,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon7,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon8,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon9,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+10,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon10,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=12 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+5,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+6,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+7,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+8,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+9,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+10,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+11,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon11
from Park_monthcard p where CreateTime >='2018-05-24 00:00:00' and PayStatus=1
最後的語句:
select S.RealName,S.PropertyName,case when S.BuildingName is not null then S.BuildingName else '暫無' end as BuildingName,case when S.RoomNo is not null then S.RoomNo else '暫無' end as RoomNo,S.parkUserID,S.carNo,
sum(S.mon0) as mon0,sum(S.mon1) as mon1,sum(S.mon2) as mon2,sum(S.mon3) as mon3,sum(S.mon4) as mon4,sum(S.mon5) as mon5,sum(S.mon6) as mon6
,sum(S.mon7) as mon7,sum(S.mon8) as mon8,sum(S.mon9) as mon9,sum(S.mon10) as mon10,sum(S.mon11) as mon11,sum(S.mon12) as mon12
,sum(S.monf1) as monf1,sum(S.monf2) as monf2,sum(S.monf3) as monf3,sum(S.monf4) as monf4,sum(S.monf5) as monf5,sum(S.monf6) as monf6
,sum(S.monf7) as monf7,sum(S.monf8) as monf8,sum(S.monf9) as monf9,sum(S.monf10) as monf10,sum(S.monf11) as monf11,sum(S.monf12) as monf12
from (
select p.carNo as carNo,p.parkUserID as parkUserID,tu.LoginName as LoginName,tu.RealName as RealName,tp.PropertyId as PropertyId,tp.PropertyName as PropertyName,tb.BuildingId as BuildingId,tb.BuildingName as BuildingName,tr.RoomId as RoomId ,tr.RoomNo as RoomNo ,tr.Apply as Apply,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as monf12,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=2 then p.money/p.month
else 0 end as monf11,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=3 then p.money/p.month
else 0 end as monf10,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=4 then p.money/p.month
else 0 end as monf9,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=5 then p.money/p.month
else 0 end as monf8,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=6 then p.money/p.month
else 0 end as monf7,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=7 then p.money/p.month
else 0 end as monf6,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=8 then p.money/p.month
else 0 end as monf5,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=9 then p.money/p.month
else 0 end as monf4,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=10 then p.money/p.month
else 0 end as monf3,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=11 then p.money/p.month
else 0 end as monf2,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-12,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-12,GETDATE())) and p.month>=12 then p.money/p.month
else 0 end as monf1,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=1 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-11,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-11,GETDATE())) and p.month>=12 then p.money/p.month
else 0 end as mon0,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-10,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-10,GETDATE())) and p.month>=12 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon1,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-9,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-9,GETDATE())) and p.month>=12 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon2,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-8,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-8,GETDATE())) and p.month>=12 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon3,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=5 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-1,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-2,GETDATE())) and p.month>=7 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-3,GETDATE())) and p.month>=8 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-4,GETDATE())) and p.month>=9 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-5,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-5,GETDATE())) and p.month>=10 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-6,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-6,GETDATE())) and p.month>=11 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-7,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,-7,GETDATE())) and p.month>=12 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+1,GETDATE())) and p.month>=4 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+2,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+2,GETDATE())) and p.month>=3 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+3,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+3,GETDATE())) and p.month>=2 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+4,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+4,GETDATE())) and p.month>=1 then p.money/p.month
else 0 end as mon4,
case when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,+0,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DATEADD(MONTH,+0,GETDATE())) and p.month>=6 then p.money/p.month
when Convert(varchar(4),newBeginDate,120)=YEAR( DATEADD(MONTH,-1,GETDATE())) and datepart(mm,newBeginDate)= MONTH(DA