Agrupación de horas con SQL Server.

Hola quería saber si es posible realizar la siguiente consulta en SQL Server 2005:
Tengo una tabla con la siguiente estructura:
id | id_curso | hora_inicio | hora_fin | id_tema | id_aula |
1 | 1 | 2008-03-01 09:00 | 2008-03-01 09:15 | 1 | 1 |
1 | 1 | 2008-03-01 09:15 | 2008-03-01 09:30 | 1 | 1 |
1 | 1 | 2008-03-01 09:30 | 2008-03-01 09:45 | 1 | 1 |
1 | 1 | 2008-03-01 09:45 | 2008-03-01 10:00 | 1 | 1 |
Esto es un ejemplo, ya que la tabla tiene cientos de registros con id_curso, id_tema e id_aula distintos y distintas horas, yo quiero que me agrupe siempre y cuando entre la hora de inicio y hora de fin no haya más de 15 minutos de diferencia, es decir que el resultado fuera el siguiente:
id | id_curso | hora_inicio | hora_fin | id_tema | id_aula |
1 | 1 | 2008-03-01 09:00 | 2008-03-01 10:00 | 1 | 1 |
Esto mismo lo quiere hacer en la tabla con mucho registro de tal forma que me agrupe por id_curso, id_tema, id_aula, mostrándome los registros con hora de inicio y fin inicial y final no todos los parciales de 15 minutos, y volviendo agrupar si el tiempo entre horas es de más de 15 minutos.
Espero haberme explicado. Muchas Gracias por anticipado.

1 respuesta

Respuesta
1
Espero sea lo que necesites, puedes hacerlo así:
select  fechainicio, fechasolucion
from tabla
where abs(datediff(minute,fechainicio,fechasolucion)) < 15 --valor de minutos a diferenciar
si deseas que no sean minutos puedes utilizar:
<table border="1" cellpadding="2" width="571" frame="box" rules="all">
<tbody>
<tr valign="top">
<td width="44%">Year</td>
<td width="56%">yy, yyyy</td>
</tr>
<tr valign="top">
<td width="44%">quarter</td>
<td width="56%">qq, q</td>
</tr>
<tr valign="top">
<td width="44%">Month</td>
<td width="56%">mm, m</td>
</tr>
<tr valign="top">
<td width="44%">dayofyear</td>
<td width="56%">dy, y</td>
</tr>
<tr valign="top">
<td width="44%">Day</td>
<td width="56%">dd, d</td>
</tr>
<tr valign="top">
<td width="44%">Week</td>
<td width="56%">wk, ww</td>
</tr>
<tr valign="top">
<td width="44%">Hour</td>
<td width="56%">hh</td>
</tr>
<tr valign="top">
<td width="44%">minute</td>
<td width="56%">mi, n</td>
</tr>
<tr valign="top">
<td width="44%">second</td>
<td width="56%">ss, s</td>
</tr>
<tr valign="top">
<td width="44%">millisecond</td>
<td width="56%">ms</td>
</tr>
</tbody>
</table>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas