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