Fun with DateTimes/Durations
You could do it like this instead. 

select E.EventID,
       E.EventName,
       count(*) as CountClients,
       sum(datediff(millisecond, I.StartDate, I.EndDate)) as SumDuration
from dbo.Events as E
  cross apply (
              select max(T.StartDate) as StartDate,
                     min(T.EndDate) as EndDate
              from (
                   values(@StartDate, @EndDate),
                         (E.StartDate, dateadd(millisecond, E.Duration, E.StartDate))
                   ) as T(StartDate, EndDate)
              ) as I
where E.StartDate &lt; @EndDate and
      dateadd(millisecond, E.Duration, E.StartDate) &gt; @StartDate
group by E.EventID,
         E.EventName;


Not sure it looks any simpler than what you have but your version is missing out on intervals that starts before @StartDate and ends after @EndDate. I changed the where clause to take care of that and at the same time it will be possible for you to use an index to somewhat limit the number of rows read from the table.

I also changed the way you calculate max StartDateand min EndDate for the sum of duration. Don't think it matter much for performance but to me the code looks neater.  

With an index on StartDate having Duration, EventID, EventName as include columns you will get an index seek on E.StartDate &lt; @EndDate and dateadd(millisecond, E.Duration, E.StartDate) &gt; @StartDate as a residual predicate. 

create nonclustered index IX on dbo.Events(StartDate)  
  include(Duration, EventName, EventID);




This will scan the index from the beginning as long as StartDate is less than @EndDate and it will make wonders for performance if you are looking at early dates and not so much for later dates.

An even better option could be an index on EventID, EventName with StartDate, Duration as include columns to remove the Sort operator from the plan.

create nonclustered index IX on dbo.Events(EventID, EventName)
  include(StartDate, Duration);




Every row in the table has to be looked at but it will be way better if you need to scan almost the entire table anyway.