V_QUERY_FINANCIALSPONSORSHIPDATERANGE
Returns all financial sponsorship date ranges.
Fields
Field | Field Type | Null | Description |
---|---|---|---|
ID | uniqueidentifier | ID | |
CONSTITUENTID | uniqueidentifier | CONSTITUENTID | |
SPONSORTYPECODE | int | SPONSORTYPECODE | |
STARTDATE | date | yes | STARTDATE |
ENDDATE | date | yes | ENDDATE |
STATUSCODE | tinyint | STATUSCODE |
Definition
Copy
/*
Generated by Blackbaud AppFx Platform
Date: 11/11/2014 4:12:06 PM
Assembly Version: Blackbaud.AppFx.Platform.SqlClr, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null
Copyright Blackbaud
*/
CREATE VIEW dbo.V_QUERY_FINANCIALSPONSORSHIPDATERANGE AS
-- all sponsorship constituency ranges; there are two cases:
-- - gift sponsorship ranges begin w/ a transaction indicating the gift financial sponsor, and end with
-- a subsequent transaction changing the financial sponsor or ending the sponsorship
-- - non-gift sponsorship ranges either begin w/ an add transaction w/ no gift financial sponsor,
-- or w/ a transaction changing the gift financial sponsor to blank, and end with a subsequent
-- transaction setting a gift financial sponsor or ending the sponsorship
with GIFTHISTORY_CTE as (
select SPONSORSHIP.ID,
SPONSORSHIP.CONSTITUENTID CORRESPONDINGSPONSORID,
isnull(FINSTART.GIFTFINANCIALSPONSORID,SPONSORSHIP.CONSTITUENTID) FINANCIALSPONSORID,
case FINSTART.ACTIONCODE when 0 then SPONSORSHIP.STARTDATE else FINSTART.TRANSACTIONDATE end STARTDATE,
case when FINEND.TRANSACTIONDATE is not null then FINEND.TRANSACTIONDATE when LASTTRANSACTION.ACTIONCODE in(2,3,5) then LASTSPONSORSHIP.ENDDATE end ENDDATE,
case when FINSTART.GIFTFINANCIALSPONSORID is not null then 1 else 0 end ISGIFT,
SPONSORSHIP.STATUSCODE
from dbo.SPONSORSHIPTRANSACTION FINSTART
inner join dbo.SPONSORSHIP on SPONSORSHIP.ID = FINSTART.TARGETSPONSORSHIPID
left join dbo.SPONSORSHIPTRANSACTION FINEND on FINEND.SPONSORSHIPCOMMITMENTID = FINSTART.SPONSORSHIPCOMMITMENTID and FINEND.TRANSACTIONSEQUENCE = (select min(X.TRANSACTIONSEQUENCE) from dbo.SPONSORSHIPTRANSACTION X where X.SPONSORSHIPCOMMITMENTID = FINSTART.SPONSORSHIPCOMMITMENTID and X.TRANSACTIONSEQUENCE > FINSTART.TRANSACTIONSEQUENCE and X.ACTIONCODE = 9)
inner join dbo.SPONSORSHIPTRANSACTION LASTTRANSACTION on LASTTRANSACTION.SPONSORSHIPCOMMITMENTID = FINSTART.SPONSORSHIPCOMMITMENTID and LASTTRANSACTION.TRANSACTIONSEQUENCE = (select max(TRANSACTIONSEQUENCE) from dbo.SPONSORSHIPTRANSACTION MAXSEQUENCE where MAXSEQUENCE.SPONSORSHIPCOMMITMENTID = FINSTART.SPONSORSHIPCOMMITMENTID and MAXSEQUENCE.ACTIONCODE <> 9)
left outer join dbo.SPONSORSHIP LASTSPONSORSHIP on LASTSPONSORSHIP.SPONSORSHIPCOMMITMENTID = LASTTRANSACTION.SPONSORSHIPCOMMITMENTID and ((LASTTRANSACTION.ACTIONCODE = 5 and LASTSPONSORSHIP.ID in(LASTTRANSACTION.TARGETSPONSORSHIPID,LASTTRANSACTION.CONTEXTSPONSORSHIPID)) or (LASTTRANSACTION.ACTIONCODE <> 5 and LASTSPONSORSHIP.ID = isnull(LASTTRANSACTION.TARGETSPONSORSHIPID,LASTTRANSACTION.CONTEXTSPONSORSHIPID)))
where FINSTART.ACTIONCODE in(0,5,9)
)
select ID, CORRESPONDINGSPONSORID CONSTITUENTID, case when ISGIFT = 1 then 1 else 0 end SPONSORTYPECODE, STARTDATE, ENDDATE, STATUSCODE
from GIFTHISTORY_CTE
union
select ID, FINANCIALSPONSORID, 2, STARTDATE, ENDDATE, STATUSCODE
from GIFTHISTORY_CTE
where ISGIFT = 1;