UFN_FUNDRAISINGGROUP_SUBGROUPNUMBER
Calculate the number of sub groups in fundraising group.
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_FUNDRAISINGGROUP_SUBGROUPNUMBER(
)
returns TABLE
as
return
with
[SUBGROUP_CTE]
AS
(
SELECT
TE.EVENTID,
TFT.PARENTTEAMID GROUPID,
TE.TYPECODE,
count(TFT.id) SUBGROUPNUMBER,
count(AA.teamconstituentID) as SUBGROUPRETAINEDNUMBER,
(count(TFT.id)-count(AA.teamconstituentID)) AS SUBGROUPNEWNUMBER
FROM dbo.TEAMFUNDRAISINGTEAM TFT
JOIN dbo.TEAMEXTENSION TE ON TE.TEAMFUNDRAISINGTEAMID = TFT.ID
JOIN dbo.EVENTEXTENSION ET ON TE.EVENTID = ET.EVENTID
LEFT JOIN ( SELECT TE2.EVENTID, TE2.teamconstituentID,TE2.TYPECODE
FROM dbo.TEAMFUNDRAISINGTEAM TFT2
JOIN dbo.TEAMEXTENSION TE2 ON TE2.TEAMFUNDRAISINGTEAMID = TFT2.ID) AA
ON TE.teamconstituentID = AA.teamconstituentID AND ET.PRIORYEAREVENTID = AA.EVENTID AND AA.TYPECODE=TE.TYPECODE
WHERE TFT.PARENTTEAMID is not null
GROUP BY TE.EVENTID,TFT.PARENTTEAMID , TE.TYPECODE
)
SELECT S.GROUPID
,S.TYPECODE
,S.EVENTID
,S.SUBGROUPNUMBER
,S.SUBGROUPNUMBER-S.SUBGROUPRETAINEDNUMBER AS SUBGROUPNEWNUMBER
,S.SUBGROUPRETAINEDNUMBER
,case when S.SUBGROUPNUMBER=0 then 0 else S.SUBGROUPRETAINEDNUMBER/S.SUBGROUPNUMBER end PARTOFSUBGROUPRETAINED
FROM [SUBGROUP_CTE] S