CREATE PROCEDURE [dbo].[BillingGetUsers] @date1 datetime, @date2 datetimeAS-- проверяем чтобы даты не были больше текущейif (@date2 > GETDATE()) set @date2 = GETDATE()if (@date2 < @date1) return-- выбираем всех юзеров, у которых были сессии пересекающиеся с заданным диапазоном-- если сессия ещё не закрыта - тоже считаемselect [UserID], (select [FIO] from [Users] where [ID] = b.[UserID]) as [UserName]from [Billing] b with (nolock)where [EventTypeID] = 10 and ([PeriodDT1] < @date2 and ([PeriodDT2] is null or [PeriodDT2] > @date1))group by [UserID]order by [UserName]