Grupo por intervalo de time

Necesito agrupar mi table en Intervalos de 15 minutos. Puedo hacer eso con:

select dateadd(minute, datediff(minute, 0, ts) / 15 * 15, 0), sum (goodpieces) from StationCount Group by dateadd(minute, datediff(minute, 0, ts) / 15 * 15, 0) 

Pero para mostrar los datos devueltos en un gráfico, necesito insert también los intervalos que no tienen ningún dato y que actualmente no aparecen en mi statement seleccionada. ¿Cómo inserto estos?

Cree una tabla con cada timestamp posible en incrementos de 15 minutos, y haga una PARTIDA IZQUIERDA desde ella hasta su consulta anterior.

 SELECT * FROM timestamps LEFT JOIN (SELECT dateadd......) ON timestamps.timestamp = StationCount.ts 

Si sabe que su tabla siempre cubre un período de 24 horas, solo necesita crear una tabla con los numbers del 0 al 95, luego, para cada input, agréguela a la hora de inicio de su tabla.

 SELECT * FROM (SELECT dateadd(minute, <starttime>, number*15) timestamp FROM numbers) timestamps LEFT JOIN (SELECT dateadd......) ON timestamps.timestamp = StationCount.ts 

Algo como esto podría ayudarte.

 declare @startDate datetime ,@endDate datetime set @startDate = '2011-10-25' set @endDate = '2011-10-26' ;with fifteenMinutes as ( select dateadd(minute, datediff(minute, 0, @startDate) / 15 * 15, 0) as q UNION ALL select dateadd(minute, 15, q) from fifteenMinutes where q < @endDate ) select * from fifteenMinutes