I am looking into phone calls to customers and I need a column that count the results for previous calls to the same customer.
E.g how many of the prior calls has ended with the result “No Contact”
I have been looking into the CASE WHEN function and the LAG function, but I haven’t been able get the result I am looking for
The below and example of what I am trying to achieve (the PriorNotInterested column):

Advertisement
Answer
You want a conditional window sum() between the first record of the client and the record preceeding the current one. Most RDBMS support the rows between clause in window functions:
select
t.*,
sum(case when Result = 'Not Interested' then 1 else 0 end)
over (
partition by customer_id
order by Call_date
rows between unbounded preceding and 1 preceding
) CountNotIntererstedPrior
from mytable t