Usar campos TEXT en consultas con GROUP BY en SQL

En ocasiones no queda más remedio que agrupar consultas, ya que hay que usar funciones de grupo como MIN, MAX, AVG, etc. En este caso necesitábamos un MIN(fecha), además de cargar campos de tipo TEXT que de manera normal no podrían agruparse. Si se hace lo siguiente, la consulta fallará.


SELECT descripcion ,
ficha ,
min(fecha) minfecha

from tabla

GROUP BY
descripcion ,
ficha

ORDER BY min(fecha)

Una consulta normalmente válida de este tipo, siendo los campos ‘descripcion’ y ‘ficha’ de tipo TEXT, fallará. Para ello tenemos que engañar convirtiendo los campos de tipo texto en cadenas con longitud limitada mediante la función SUBSTRING. La solución sería la siguiente:


SELECT substring(descripcion,1,500) descripcion ,
substring(ficha,1,500) ficha ,
min(fecha) minfecha


from tabla

GROUP BY
substring(descripcion,1,500) ,
substring(ficha,1,500)

ORDER BY min(fecha)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: