Используйте CTE (общее табличное выражение) вместо представления. Например:
Declare @start date, @end date
set @start='01/01/2020'
set @end='03/03/2020'
Тогда:
with
t as (
SELECT DISTINCT C.Branch_ID+''+ CAST(C.Wait_No AS NVARCHAR(20)) [WaitNumber],
W.LASTNAME + ', ' + W.FIRSTNAME + ' ' + W.TITLE [Waiter],
Customer_In_Time,
Customer_Out_Time,
Date,
Table_No
FROM Customers C
LEFT JOIN Waitor_Resources WR ON C.Wait_No = WR.Wait_No
AND C.Branch_ID = wR.Branch_ID
AND C.Floor_ID = WR.Floor_ID
AND C.Resource_ID = 0
AND C.Order_No = 1
AND C.Active =1
LEFT JOIN Waiters W ON W.User_ID = WR.User_ID
AND W.Active =1
)
select t.WaitNumber,Waiter,t.Customer_In_Time,Customer_Out_Time,Table_no,
coalesce(sum(datediff(minute, prev_cot, Customer_in_time)), 0) as free_minutes
from (select t.*,
tprev.Customer_out_time as prev_cot
from t outer apply
(select top (1) t2.*
from t t2
where t2.Waiter = t.Waiter and t2.date = t.date and
t2.Customer_in_time < t.Customer_in_time
order by t.Waiter, t2.Customer_in_time
) tprev
) t
where t.date between @start and @end
and Waiter is not Null
group by Waiter, Customer_In_Time,Customer_Out_Time, Table_no,t.WaitNumber
order by t.Waiter,t.Customer_In_time