Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta de concatenacion de registros.

Estas en el tema de Consulta de concatenacion de registros. en el foro de SQL Server en Foros del Web. Buenas noches, tengo un problemilla desde hace 1 día. Por favor orientenme ... lo que deseo hacer es anidar registros continuos... dejo un ejemplo. @import ...
  #1 (permalink)  
Antiguo 15/03/2015, 20:16
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 3 meses
Puntos: 1
Consulta de concatenacion de registros.

Buenas noches,

tengo un problemilla desde hace 1 día.

Por favor orientenme ... lo que deseo hacer es anidar registros continuos... dejo un ejemplo.


Código SQL:
Ver original
  1. CREATE TABLE tabla_logfile
  2. (
  3. GROUP# INT,
  4. STATUS VARCHAR (10),
  5. TYPE VARCHAR (10),
  6. MEMBER VARCHAR (100)
  7. )
  8.  
  9. INSERT INTO tabla_logfile VALUES (1,NULL,'ONLINE','C:\ORACLEXE_C\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_1_BJD7NM9O_.LOG')
  10. INSERT INTO tabla_logfile VALUES (2,NULL,'ONLINE','D:\ORACLEXE_D\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_1_BJD7NM9O_.LOG')
  11. INSERT INTO tabla_logfile VALUES (3,NULL,'ONLINE','E:\ORACLEXE_E\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_1_BJD7NM9O_.LOG')
  12. INSERT INTO tabla_logfile VALUES (1,NULL,'ONLINE','Z:\ORACLEXE_Z\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_1_BJD7NM9O_.LOG')



Lo que se desea es que mediante una consulta los registros que tengan el mismo id "grupo#" se unan es decir quedarian así.

Código SQL:
Ver original
  1. SELECT 'ALTER DATABASE ADD LOGFILE GROUP: ' || a.GROUP# || ' '|| a.MEMBER   FROM tabla_logfile A
  2. WHERE a.GROUP# IN (SELECT  GROUP# FROM tabla_logfile GROUP BY GROUP# HAVING COUNT(*) = 1 )
  3. UNION
  4. SELECT 'ALTER DATABASE ADD LOGFILE GROUP: ' || a.GROUP# || ' '|| a.MEMBER   FROM tabla_logfile A
  5. WHERE a.GROUP# IN (SELECT  GROUP# FROM tabla_logfile GROUP BY GROUP# HAVING COUNT(*) = 2 )
Si lo ejecutan verán que salen 4 registros... de los cuales deberían salir 3 porque hay 2 registros con el numero de grupo 1 ... entonces lo que deberia salir asi:

ALTER DATABASE ADD LOGFILE GROUP: ' || a.Group# || ' '|| a.MEMBER + la 2da ruta del otro registro que tiene el mismo grupo.

LO INTENTEE CON MUCHAS COSAS :( SIN EXITO..

Espero tengan una sugerencia o una luz u.u

Última edición por gnzsoloyo; 16/03/2015 a las 09:35
  #2 (permalink)  
Antiguo 16/03/2015, 08:53
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Consulta de concatenacion de registros.

Intentá esta consulta:
Código SQL:
Ver original
  1. SELECT  T.*,
  2.         Stuff((SELECT ',' +Member
  3.             FROM    tabla_logfile T1
  4.             WHERE   T1.GROUP#=T.GROUP#
  5.             FOR XML Path('')),1,1,'') AS MiTabla
  6. FROM    (SELECT DISTINCT  GROUP#
  7.         FROM    tabla_logfile) T;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 16/03/2015, 10:29
 
Fecha de Ingreso: febrero-2015
Mensajes: 89
Antigüedad: 9 años, 3 meses
Puntos: 1
Exclamación Respuesta: Consulta de concatenacion de registros.

Cita:
Iniciado por GeriReshef Ver Mensaje
Intentá esta consulta:
Código SQL:
Ver original
  1. SELECT  T.*,
  2.         Stuff((SELECT ',' +Member
  3.             FROM    tabla_logfile T1
  4.             WHERE   T1.GROUP#=T.GROUP#
  5.             FOR XML Path('')),1,1,'') AS MiTabla
  6. FROM    (SELECT DISTINCT  GROUP#
  7.         FROM    tabla_logfile) T;

Muchas gracias con eso ya me diste una ideaa :P
no sabia de la existencia de esa funcion :D

Aprovechando una duda-- como haria .. si en vez de ponerlo alado como una cadena anidada
agrego una fila .. pero con otro texto que indique que es repetido...

Última edición por jmendezg; 16/03/2015 a las 13:44

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:51.