Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/01/2012, 06:19
ellgon
 
Fecha de Ingreso: octubre-2009
Mensajes: 29
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Obtener MAX agrupando por horas

Pues ya he vuelto con la query terminada.

La query que te da lo que quieres es:

Código SQL:
Ver original
  1. SELECT
  2.   cuartoHora,
  3.   CAST(SUBSTRING(codificacion, 1,4) AS INT) AS valor,
  4.   CONVERT(datetime, SUBSTRING(codificacion, 6, len(codificiacion)), 111) AS fecha
  5. FROM
  6.   (
  7.     SELECT
  8.       CONVERT(CHAR(8), Fecha, 108) AS cuartoHora,
  9.       MAX(
  10.         RIGHT('0000' + CAST(valor AS CHAR(4)), 4)+'_'+
  11.         CONVERT(CHAR)CONVERT(VARCHAR(),fecha,111)
  12.       ) AS codificacion
  13.     FROM tabla
  14.     GROUP BY CONVERT(CHAR(8), Fecha, 108)
  15.   ) A

Puede tener fallos, porque no la he ejecutado, pero el concepto es ese.
Si tienes cualquier duda o quieres que la explique, me dices algo.

Un saludo

Edito: esta query te permite detectar un valor máximo de 9999 (por eso se añaden 4 ceros y se cogen los cuatro caracteres de la derecha) si el valor puede ser mayor, se modifica el número de ceros, el cast(valor as char(X)) y se modifica el right.

Última edición por ellgon; 13/01/2012 a las 06:21 Razón: Añado explicación adicional.