USP_BBDW_FACT_EVENTREGISTRANT_REGISTRANTFEES

Parameters

Parameter Parameter Type Mode Description
@OPENWINDOW datetime IN
@CLOSEWINDOW datetime IN

Definition

Copy


create procedure dbo.[USP_BBDW_FACT_EVENTREGISTRANT_REGISTRANTFEES](
  @OPENWINDOW datetime
  @CLOSEWINDOW datetime
) as
  set nocount on;

  with RegistrantMembers as
  (
      select R.[ID] [ID]
      from dbo.[REGISTRANT] r (nolock)
      left join [EVENTREGISTRANTPAYMENT] evp (nolock) on r.[ID] = evp.[REGISTRANTID] 
      left join [REGISTRANTREGISTRATION] rr (nolock) on r.[ID] = rr.[ID]
      left join [EVENTPRICE]  ep     (nolock) on ep.ID = rr.ID 
      where  (r.[DATECHANGED] > @OPENWINDOW and r.[DATECHANGED] <= @CLOSEWINDOW  )  or
      (rr.[DATECHANGED] > @OPENWINDOW and rr.[DATECHANGED] <= @CLOSEWINDOW  )  or
      (ep.[DATECHANGED] > @OPENWINDOW and ep.[DATECHANGED] <= @CLOSEWINDOW  )  or
      (evp.[DATECHANGED] > @OPENWINDOW and evp.[DATECHANGED] <= @CLOSEWINDOW  )  
  ),
   RegPayment as
  (
      select  sum(evp.AMOUNT) [REGISTRATIONFEERECEIVED], evp.[REGISTRANTID] 
      from [EVENTREGISTRANTPAYMENT]  evp (nolock)    
      where 
        evp.[REGISTRANTID] in 
        (
            select [ID] FROM RegistrantMembers 
        )
      group by evp.[REGISTRANTID]  
  )
  ,
  RegFee  as
  (
      select  sum(rr.AMOUNT) [REGISTRATIONFEE], min(cast(ep.id as binary(16)))[EVENTPRICESYSTEMID], rr.[REGISTRANTID]
      from [REGISTRANTREGISTRATION]  rr
      inner join dbo.[EVENTPRICE] ep (nolock) on rr.[EVENTPRICEID] = ep.[ID]
      where  rr.REGISTRANTID in 
        (
            select [ID] FROM RegistrantMembers 
        )
      group by rr.[REGISTRANTID]  
  ) 

  select 
      rf.[REGISTRANTID] [EVENTREGISTRANTSYSTEMID], 
      c.[ID] [CONSTITUENTSYTEMID],
      r.[EVENTID] [EVENTSYSTEMID],
      isnull( rf.[REGISTRATIONFEE] ,0)[REGISTRATIONFEE],
      isnull( rp.[REGISTRATIONFEERECEIVED],0) [REGISTRATIONFEERECEIVED],
      rf.[EVENTPRICESYSTEMID] 
  from RegFee rf left join RegPayment rp 
  on rp.Registrantid = rf.[REGISTRANTID]
  inner join [REGISTRANT] r on r.ID = rf.[REGISTRANTID]
  inner join [CONSTITUENT] c (nolock)    on c.ID = r.[CONSTITUENTID];