none
valores con id duplicado RRS feed

  • Pregunta

  • Buen dia.

    tengo una tabla en la cual me aparecen dos registros con el mismo id, pero con valores distintos en el campo total. 

    lo que deseo no es eliminar, si no fusionar esos registros, y sumar sus valores en el total.

    gracias de antemano.

    jueves, 30 de junio de 2016 14:45

Respuestas

  • Podrías hacer algo parecido a esto:

    Insert into tablaCorregida(ID,Total) select ID, SUM(Total) from tablaAntigua group by ID

    • Propuesto como respuesta Sergio S Arias jueves, 30 de junio de 2016 15:45
    • Marcado como respuesta José De Alva lunes, 4 de julio de 2016 17:42
    jueves, 30 de junio de 2016 14:49
  • franklinp83,

    La idea de fusionar es unir o agrupar los valores repetidos en uno sólo y creo que eso exige dos procedimientos: actualizar los campos a agrupar y eliminar las filas restantes. Eso funciona en la teoría, pero puestos en marcha debes de cuidar que las filas a borrar no tengan dependencia con otras tablas. Las instrucciones a realizar deberían ser las siguientes:

    /*Actualizar columna [Total]*/
    WITH ConjuntoAgrupado (id, Total) AS
    (
    	SELECT id, SUM(Total) FROM MiTabla GROUP BY id
    )
    UPDATE t1 SET t1.Total = t2.Total FROM MiTabla t1 INNER JOIN ConjuntoAgrupado t2 ON (t1.id = t2.id);
    
    /*Quitar filas duplicadas*/
    WITH ConjuntoOrdenado (id, NumeroFila) AS
    (
    	SELECT id, ROW_NUMBER() OVER(PARTITION BY id ORDER BY id) FROM MiTabla
    )
    DELETE ConjuntoOrdenado WHERE (NumeroFila > 1);

    Donde MiTabla deberá ser el nombre de la tabla sobre la que quieres operar los cambios.

    • Marcado como respuesta José De Alva lunes, 4 de julio de 2016 17:42
    jueves, 30 de junio de 2016 23:20

Todas las respuestas

  • Podrías hacer algo parecido a esto:

    Insert into tablaCorregida(ID,Total) select ID, SUM(Total) from tablaAntigua group by ID

    • Propuesto como respuesta Sergio S Arias jueves, 30 de junio de 2016 15:45
    • Marcado como respuesta José De Alva lunes, 4 de julio de 2016 17:42
    jueves, 30 de junio de 2016 14:49
  • franklinp83,

    La idea de fusionar es unir o agrupar los valores repetidos en uno sólo y creo que eso exige dos procedimientos: actualizar los campos a agrupar y eliminar las filas restantes. Eso funciona en la teoría, pero puestos en marcha debes de cuidar que las filas a borrar no tengan dependencia con otras tablas. Las instrucciones a realizar deberían ser las siguientes:

    /*Actualizar columna [Total]*/
    WITH ConjuntoAgrupado (id, Total) AS
    (
    	SELECT id, SUM(Total) FROM MiTabla GROUP BY id
    )
    UPDATE t1 SET t1.Total = t2.Total FROM MiTabla t1 INNER JOIN ConjuntoAgrupado t2 ON (t1.id = t2.id);
    
    /*Quitar filas duplicadas*/
    WITH ConjuntoOrdenado (id, NumeroFila) AS
    (
    	SELECT id, ROW_NUMBER() OVER(PARTITION BY id ORDER BY id) FROM MiTabla
    )
    DELETE ConjuntoOrdenado WHERE (NumeroFila > 1);

    Donde MiTabla deberá ser el nombre de la tabla sobre la que quieres operar los cambios.

    • Marcado como respuesta José De Alva lunes, 4 de julio de 2016 17:42
    jueves, 30 de junio de 2016 23:20
  • Gracias.

    BENDICIONES!!

    lunes, 4 de julio de 2016 14:29