UFN_REVENUE_GETORDEREDDESIGNATIONS_TOP2_BULK
This function returns information about the top two designations, ordered by amount, for all revenue.
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_REVENUE_GETORDEREDDESIGNATIONS_TOP2_BULK()
returns table
as
return
with REVENUESPLIT_CTE as (
select
FINANCIALTRANSACTIONLINEITEM.ID,
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID,
REVENUESPLIT_EXT.DESIGNATIONID,
FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT,
FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on REVENUESPLIT_EXT.ID = FINANCIALTRANSACTIONLINEITEM.ID
where FINANCIALTRANSACTIONLINEITEM.DELETEDON is null and FINANCIALTRANSACTIONLINEITEM.TYPECODE != 1
)
select
FINANCIALTRANSACTION.ID REVENUEID,
DESIGNATION1.NAME DESIGNATION1NAME,
case len(DESIGNATION1.VANITYNAME)
when 0
then dbo.UFN_DESIGNATION_GETNODENAME(DESIGNATION1.ID)
else DESIGNATION1.VANITYNAME
end as DESIGNATION1PUBLICNAME,
DESIGNATIONS.SPLIT1AMOUNT DESIGNATION1AMOUNT,
DESIGNATION2.NAME DESIGNATION2NAME,
case len(DESIGNATION2.VANITYNAME)
when 0
then dbo.UFN_DESIGNATION_GETNODENAME(DESIGNATION2.ID)
else DESIGNATION2.VANITYNAME
end as DESIGNATION2PUBLICNAME,
DESIGNATIONS.SPLIT2AMOUNT DESIGNATION2AMOUNT,
DESIGNATIONS.SPLIT1TRANSACTIONAMOUNT DESIGNATION1TRANSACTIONAMOUNT,
DESIGNATIONS.SPLIT1ORGANIZATIONAMOUNT DESIGNATION1ORGANIZATIONAMOUNT,
DESIGNATIONS.SPLIT2TRANSACTIONAMOUNT DESIGNATION2TRANSACTIONAMOUNT,
DESIGNATIONS.SPLIT2ORGANIZATIONAMOUNT DESIGNATION2ORGANIZATIONAMOUNT
from dbo.FINANCIALTRANSACTION
cross apply(
select top 1
SPLIT1.ID SPLIT1ID, SPLIT1.DESIGNATIONID SPLIT1DESIGNATIONID, SPLIT1.BASEAMOUNT SPLIT1AMOUNT, SPLIT1.TRANSACTIONAMOUNT SPLIT1TRANSACTIONAMOUNT, SPLIT1.ORGAMOUNT SPLIT1ORGANIZATIONAMOUNT,
SPLIT2.ID SPLIT2ID, SPLIT2.DESIGNATIONID SPLIT2DESIGNATIONID, SPLIT2.BASEAMOUNT SPLIT2AMOUNT, SPLIT2.TRANSACTIONAMOUNT SPLIT2TRANSACTIONAMOUNT, SPLIT2.ORGAMOUNT SPLIT2ORGANIZATIONAMOUNT
from REVENUESPLIT_CTE as SPLIT1
left join REVENUESPLIT_CTE as SPLIT2 on SPLIT1.FINANCIALTRANSACTIONID = SPLIT2.FINANCIALTRANSACTIONID and SPLIT1.ID != SPLIT2.ID
where SPLIT1.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
order by SPLIT1.BASEAMOUNT desc, SPLIT2.BASEAMOUNT desc
) DESIGNATIONS
inner join dbo.DESIGNATION DESIGNATION1 on DESIGNATION1.ID = DESIGNATIONS.SPLIT1DESIGNATIONID
left join dbo.DESIGNATION DESIGNATION2 on DESIGNATION2.ID = DESIGNATIONS.SPLIT2DESIGNATIONID
where (FINANCIALTRANSACTION.TYPECODE < 10 or FINANCIALTRANSACTION.TYPECODE = 15)
and FINANCIALTRANSACTION.DELETEDON is null