UFN_CONSTITUENTRECOGNITION_CONSECUTIVEYEARS
Returns the number of consecutive years a constituent has been a member in a recognition program.
Return
Return Type |
---|
int |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTRECOGNITIONID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CONSTITUENTRECOGNITION_CONSECUTIVEYEARS
(
@CONSTITUENTRECOGNITIONID uniqueidentifier
)
returns int
with execute as caller
as begin
declare @RETVAL int;
with PROGRAM_NOW as
(
select
ID,
EXPIRATIONDATE,
RECOGNITIONPROGRAMID,
CONSTITUENTID,
cast(1 as bigint) as ROWNUMBER
from dbo.CONSTITUENTRECOGNITION
where ID = @CONSTITUENTRECOGNITIONID
union all
select
C.ID,
C.EXPIRATIONDATE,
C.RECOGNITIONPROGRAMID,
C.CONSTITUENTID,
ROW_NUMBER() over (partition by C.RECOGNITIONPROGRAMID order by C.EXPIRATIONDATE desc) as ROWNUMBER
from dbo.CONSTITUENTRECOGNITION C
inner join PROGRAM_NOW P on C.RECOGNITIONPROGRAMID = P.RECOGNITIONPROGRAMID
and C.CONSTITUENTID = P.CONSTITUENTID
and P.ID <> C.ID
and C.EXPIRATIONDATE BETWEEN dateadd(yyyy, -1, P.EXPIRATIONDATE) and DATEADD(dd,-1,P.EXPIRATIONDATE)
)
select @RETVAL = count(distinct EXPIRATIONDATE)
from PROGRAM_NOW
where ROWNUMBER = 1;
return @RETVAL;
end