Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/12/2006, 13:26
daniel00
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años, 2 meses
Puntos: 8
Re: depurar registros duplicados en sql

Hola Ceci.

No dices cual es tu base de datos, si tu base de datos es SQL Server, te dejo el siguiente código.

Si la base de datos es Access puedes migrarlo a SQL server transformar los datos y regresarlos a Access. Si es otra base de datos igual y te sirve la lógica. Y sino espero que le sirva a alguién.

El proceso es el siguiente:

Código:
DECLARE @intPresup int, @intLinea int, @intCant int
DECLARE @strDescrip varchar(8000) 

DECLARE curDatos CURSOR FOR 
SELECT COD_PRESUP, LINEAPRESUP, SUM(CANT)
FROM Tabla 
ORDER BY COD_PRESUP, LINEAPRESUP, 

OPEN curDatos 

FETCH NEXT FROM curDatos 
INTO @intPresup , @intLinea , @intCant

WHILE @@FETCH_STATUS = 0
BEGIN
	SET @strDescrip = ''
	-- Concatenamos la descripción 
	/* crédito a mithrandir  */
	SELECT @strDescrip = Descripcion + ' '+ @strDescrip  from Tabla
		WHERE COD_PRESUP = @intPresup AND LINEAPRESUP = @intLinea

	-- Insertamos el registro único
	INSERT INTO NuevaTabla (COD_PRESUP, LINEAPRESUP, CANT, Descripcion) 
		VALUES ( @intPresup, @intLinea, @intCant, @strDescrip) 

	-- Avanzar al siguiente registro.
	FETCH NEXT FROM curDatos 
	INTO @intPresup , @intLinea , @intCant
END

CLOSE curDatos
DEALLOCATE curDatos
NuevaTabla .- Tiene la misma estructura de Tabla.

Ahora el problema, como comenta jabi, es sobre la longitud del campo Descripcion, debes de verificar que quepa el contenido, recuerda que varchar tiene hasta 8000 bytes.

Saludos y suerte!

P.D. El crédito de mithrandir