SQL Server - convertir registros dobles en un solo registro

 
Vista:

convertir registros dobles en un solo registro

Publicado por marcela (3 intervenciones) el 19/11/2014 14:59:57
Hola, soy nueva en t-sql y necesito ayuda con un query que me ayude con esto:

Tengo una tabla datos generales, la cual contiene los campos
cod_le cod_org
001 regular
001 regular
002 regular
002 alternativa
003 regular
003
004 regular
005 alternativa

lo que necesito hacer es:
cod_le cod_org
001 regular
002 regular - alternativa
003 regular
004 regular
005 alternativa


Por favor, es importante! gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

convertir registros dobles en un solo registro

Publicado por Isaias (4558 intervenciones) el 19/11/2014 17:35:58
¿En que motor de base de datos, versión?, ¿llevas algún avance de tu query? (muéstralo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

convertir registros dobles en un solo registro

Publicado por Marcela (3 intervenciones) el 19/11/2014 19:58:17
El motor de base de datos en sql server 2012

Lo que hice fue pasar a otra tabla temporal cod_le y ahi voy actualizando los otros cod_org de manera que no se repitan.

Ya lo resolvi gracias! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha disminuido su posición en 8 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

convertir registros dobles en un solo registro

Publicado por Hugo QN (19 intervenciones) el 19/11/2014 21:00:46
aquí tienes la sentencia, un curso dentro un cursor

DECLARE @repite INTEGER, @cod_le CHAR(3), @cod_org VARCHAR(70), @cod_org_acum VARCHAR(70)
DECLARE @resultado TABLE (cod_le CHAR(3), cod_org VARCHAR(70))

DECLARE cur_datos CURSOR FOR
SELECT cod_le, COUNT(1) AS repite FROM datos_generales GROUP BY cod_le
OPEN cur_datos
FETCH cur_datos INTO @cod_le, @repite

WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @cod_org_acum = ''
-- IF @repite > 1
-- BEGIN
-- acumula el segundo campo
DECLARE cur_acumular CURSOR FOR
SELECT cod_org FROM datos_generales WHERE cod_le = @cod_le
OPEN cur_acumular
FETCH cur_acumular INTO @cod_org

WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @cod_org_acum = @cod_org_acum + @cod_org + ' - '

FETCH cur_acumular INTO @cod_org
END

CLOSE cur_acumular
DEALLOCATE cur_acumular
-- END
-- ELSE
-- BEGIN
-- SELECT @cod_org_acum = cod_org FROM datos_generales WHERE cod_le = @cod_le
-- END

INSERT INTO @resultado(cod_le, cod_org)
VALUES (@cod_le, LEFT(@cod_org_acum, LEN(@cod_org_acum) - 2))

FETCH cur_datos INTO @cod_le, @repite
END

CLOSE cur_datos
DEALLOCATE cur_datos

SELECT * FROM @resultado

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

convertir registros dobles en un solo registro

Publicado por Marcela (3 intervenciones) el 19/11/2014 21:05:38
Revisare como funciona y te aviso

Gracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

convertir registros dobles en un solo registro

Publicado por Isaias (4558 intervenciones) el 19/11/2014 23:01:16
Los CURSORES, son asesinos de los servidores, para eso implementaros las CTE's
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar