UFN_SELECTION_CONSTITUENT_LOYALDONORS
Returns all Constituents that satisfy Loyal donor constituency criteria.
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_SELECTION_CONSTITUENT_LOYALDONORS()
returns table
as return
(
with CONSTITUENCYCRITERIASPOUSE_CTE as
(
select top 1
LOYALDONORCONSTITUENCYDEFPERIOD,
LOYALDONORCONSTITUENCYDEFPERIODUNITCODE,
MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION,
getdate() as CURRENTDATE,
dateadd(mm,-LOYALDONORCONSTITUENCYDEFPERIOD,getdate()) MMFROMCURRENTDATE,
dateadd(yy,-LOYALDONORCONSTITUENCYDEFPERIOD,getdate()) YYFROMCURRENTDATE
from dbo.CONSTITUENCYCRITERIASPOUSE
)
select CONSTITUENTID as ID from
(
select distinct REVENUEANDRECOGNITION.CONSTITUENTID, REVENUEANDRECOGNITION.PERIOD from
(
select distinct
REVENUE.CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock) on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.MMFROMCURRENTDATE and
REVENUE.DELETEDON is null and FTLT.DELETEDON is null
and FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUE.CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
union all
select distinct
REVENUERECOGNITION.CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT with (nolock) on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUERECOGNITION with (nolock) on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.MMFROMCURRENTDATE and
REVENUESPLIT.DELETEDON is null and
REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID
and REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUERECOGNITION.CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
) as REVENUEANDRECOGNITION
group by REVENUEANDRECOGNITION.CONSTITUENTID, PERIOD
) as SUBSQL
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
CONSTITUENCYCRITERIASPOUSE_CTE.MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1 and
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = 1
group by
SUBSQL.CONSTITUENTID,
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
having count(*) >= CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
union all
select CONSTITUENTID as ID from
(
select distinct REVENUEANDRECOGNITION.CONSTITUENTID, REVENUEANDRECOGNITION.PERIOD from
(
select distinct
REVENUE.CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock) on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.YYFROMCURRENTDATE and
REVENUE.DELETEDON is null and FTLT.DELETEDON is null
and FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUE.CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
union all
select distinct
REVENUERECOGNITION.CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM REVENUESPLIT with (nolock) on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT with (nolock) on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUERECOGNITION with (nolock) on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.YYFROMCURRENTDATE and
REVENUESPLIT.DELETEDON is null and
REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID
and REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUERECOGNITION.CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
) as REVENUEANDRECOGNITION
group by REVENUEANDRECOGNITION.CONSTITUENTID, PERIOD
) as SUBSQL
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
CONSTITUENCYCRITERIASPOUSE_CTE.MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1 and
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = 0
group by
CONSTITUENTID,
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
having count(*) >= CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
union all
select CONSTITUENTID as ID from
(
select distinct
CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock) on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.MMFROMCURRENTDATE and
REVENUE.DELETEDON is null and FTLT.DELETEDON is null
and FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
CONSTITUENTID,
datediff(mm,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
) as SUBSQL
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
CONSTITUENCYCRITERIASPOUSE_CTE.MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 0 and
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = 1
group by
CONSTITUENTID,
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
having count(*) >= CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
union all
select CONSTITUENTID as ID from
(
select distinct
CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE) as PERIOD
from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock) on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLT with (nolock) on FTLT.FINANCIALTRANSACTIONID = REVENUE.ID
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
cast(REVENUE.DATE as datetime) >= CONSTITUENCYCRITERIASPOUSE_CTE.YYFROMCURRENTDATE and
REVENUE.DELETEDON is null and FTLT.DELETEDON is null
and FTLT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
CONSTITUENTID,
datediff(yy,cast(REVENUE.DATE as datetime),CONSTITUENCYCRITERIASPOUSE_CTE.CURRENTDATE)
) as SUBSQL
cross join CONSTITUENCYCRITERIASPOUSE_CTE
where
CONSTITUENCYCRITERIASPOUSE_CTE.MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 0 and
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIODUNITCODE = 0
group by
CONSTITUENTID,
CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
having count(*) >= CONSTITUENCYCRITERIASPOUSE_CTE.LOYALDONORCONSTITUENCYDEFPERIOD
)