Find top spenders
select top @Number
SUM(p.paymentamount) as Revenue,
c.contactid,
c.firstname,
c.lastname
from contacts c
left outer join orders o on o.patientid = c.contactid
left outer join payments p on p.orderid = o.orderid
where patientactive = 'Yes'
and p.paymentdate between @DateFrom and @DateTo
and p.paymenttype not in ('write-off','adjustment')
GROUP BY c.contactid, c.firstname, c.lastname
ORDER BY SUM(p.paymentamount) desc