Mostrando entradas con la etiqueta SQL Server. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL Server. Mostrar todas las entradas

miércoles, 5 de agosto de 2009

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)

CONCAT en SQL Server

CONCAT es una función propia de MySQL y Oracle que sirve para juntar diferentes campos y cadenas para que se muestren como una en una consulta de SQL. Por desgracia, no puede usarse en SQL Server. Para ello podríamos hacer lo siguiente:

SELECT id,nombre_es + ' (' + tipo + ')' FROM tabla ORDER BY nombre_es asc