Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/04/2011, 08:52
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: Hay manera fácil de concatenar valores de filas?

Hola de nuevo LUISESPOCH: Creo que el editor concatenó algún caracter extraño antes en el select interno, ya que si lo copias y ejecutas tal cual está marcando el siguiente error:

Mens. 102, Nivel 15, Estado 1, Línea 25
Incorrect syntax near ' '.

Lo único que tenías que hacer es eliminar esos caracteres:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (Campo1 VARCHAR(3), Campo2 VARCHAR(50))
  2. INSERT INTO @Tabla VALUES ('001', 'Descripcion1')
  3. INSERT INTO @Tabla VALUES ('001', 'Descripcion2')
  4. INSERT INTO @Tabla VALUES ('001', 'Descripcion3')
  5. INSERT INTO @Tabla VALUES ('002', 'Descripcion1')
  6. INSERT INTO @Tabla VALUES ('002', 'Descripcion2')
  7. INSERT INTO @Tabla VALUES ('002', 'Descripcion3')
  8.  
  9. SELECT Campo1, LEFT(CamposConcatenados , LEN(CamposConcatenados )-1) AS CamposConcatenados
  10. FROM @Tabla AS extern
  11. CROSS APPLY
  12. (
  13. SELECT Campo2 + ','
  14. FROM @Tabla AS intern
  15. WHERE extern.Campo1 = intern.Campo1
  16. FOR XML PATH('')
  17. ) pre_trimmed (CamposConcatenados)
  18. GROUP BY Campo1, CamposConcatenados

El ejemplo funciona perfectamente en SQL Server 2005 y posteriores, no estoy seguro si funciona para 2000, sería cuestión de probar.

En cuanto afectar el rendimiento utilizando funciones, pues sería cuestión de hacer pruebas.

Checa esta liga:

http://www.forosdelweb.com/f87/crear...upando-856024/

Ahí se muestra una función para concatenar registros, en donde se hace de manera recursiva. En lo particular me ha servido bastante, es más sencilla de implementar y hasta la fecha no me ha dado problemas con el servidor, aunque habría que considerar el volumen de información que vas a manejar.

De cualquier manera, haz la prueba para que elijas la opción que más te sirva.

Saludos
Leo.