SQL Server - convertir registros dobles en un solo registro

   
Vista:

convertir registros dobles en un solo registro

Publicado por marcela marcelaguerra@live.com (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

convertir registros dobles en un solo registro

Publicado por Isaias (3182 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

convertir registros dobles en un solo registro

Publicado por Hugo QN (18 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

convertir registros dobles en un solo registro

Publicado por Isaias (3182 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