0
이 함수는 매월 설정된 값을 기준으로 보험료를 계산합니다.누군가이 기능을 단순화/가속화 할 수 있습니까?
내가 지난 밤에 생각해 낸 것입니다. 나는 그것의 난 내 현재의 지식으로 할 수있는 최고의 .. 더럽고 끔찍하지만
declare @january decimal(6,3)
declare @february decimal(6,3)
declare @march decimal(6,3)
declare @april decimal(6,3)
declare @may decimal(6,3)
declare @june decimal(6,3)
declare @july decimal(6,3)
declare @august decimal(6,3)
declare @september decimal(6,3)
declare @october decimal(6,3)
declare @november decimal(6,3)
declare @december decimal(6,3)
set @january = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'january')
set @february = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'february')
set @march = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'march')
set @april = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'april')
set @may = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'may')
set @june = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'june')
set @july = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'july')
set @august = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'august')
set @september = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'september')
set @october = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'october')
set @november = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'november')
set @december = (select earningvalue from tblearningpatterns where clientname = @client and earningpattern = @pattern and calmonth = 'december')
set @tripearnings = 1 - @pretripearnings
if @triptype = '1'
begin
if datepart(month, @outdate) = 1
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@january /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@january + @february)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@january + @february + @march) /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@january + @february + @march + @april + @may + @june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 2
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@February /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@february + @march)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@february + @march + @April)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@february + @march + @april + @may + @june + @july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 3
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@march /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@march + @april)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@march + @April + @may) /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@march + @april + @may + @june + @july + @august + @september + @october + @november + @december + @January)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 4
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@april /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@april + @may)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@April + @may + @june) /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@april + @may + @june + @july + @august + @september + @october + @november + @december + @January + @February)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 5
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@may /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@may + @june)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@may + @june + @july)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@may + @june + @july + @august + @september + @october + @november + @december + @January + @February + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 6
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@june /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@june + @july)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@june + @july + @august)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@june + @july + @august + @september + @october + @november + @december + @January + @February + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 7
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@july /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@july + @august)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@july + @august + @september)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@july + @august + @september + @october)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@july + @august + @september + @october + @november + @december + @January + @February + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 8
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@august /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@august + @september)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@august + @september + @october)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@august + @september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@august + @september + @october + @november + @december + @January + @February + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 9
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@september /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@september + @october)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@september + @october + @november)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@september + @october + @november + @december)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@september + @october + @november + @december + @january + @february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@september + @october + @november + @december + @January + @February + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 10
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@october /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@october + @november)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@october + @november + @december)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@october + @november + @december + @january)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@october + @november + @december + @january + @february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@october + @november + @december + @January + @February + @march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 11
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@november /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@november + @december)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@november + @december + @january)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@november + @december + @january + @february)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@november + @december + @january + @february + @march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@november + @december + @January + @February + @march + @april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
if datepart(month, @outdate) = 12
begin
if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 1
set @earnedpremium = @premium * (@december /100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 2
set @earnedpremium = @premium * ((@december + @january)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 3
set @earnedpremium = @premium * ((@december + @january + @february)/100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 4
set @earnedpremium = @premium * ((@december + @january + @february + @march)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 5
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 6
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april + @may)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 7
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april + @may + @june)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 8
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 9
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april + @may + @june + @july)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 10
set @earnedpremium = @premium * ((@december + @january + @february + @march + @april + @may + @june + @july + @august)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 11
set @earnedpremium = @premium * ((@december + @January + @February + @march + @april + @may + @june + @july + @august + @september)/ 100)
else if round((datediff(day, @outdate, @experiencedate)/30.41),0) = 12
set @earnedpremium = @premium
end
end
분할 및 정복을 시도 알고있다! .. 스위치 케이스를 들여다 봐라! – Vishal
[사례 (Transact-SQL)] (http://msdn.microsoft.com/en-us/library/ms181765.aspx) –
이 게시물은 브라우저 버그로 생성됩니다! – DForck42