none
como igualar la suma total de una columna(tabla b) al campo (de la tabla A) RRS feed

  • Pregunta

  • AYUDENME POR FAVOR!! les explico un poco

    - yo ingreso un numero de proceso en el cual me arroja por ejemplo 5 registros con cantidades diferentes. una de las columnas se llama precio_unitario(que es la suma total de la columna pre_unit de la tabla b)

    lo que quiero saber es como hago para cuadrar sum(pre_unit) de la tabla b para que su resultado sea igual al campo de precio_unitario de la tabla A

    GRACIAS !!!

    lunes, 1 de abril de 2019 22:14

Respuestas

  • Hola ghiadafne001:

    Voy a reproducir con sentencias sql lo que has solicitado.

    create table a (id_item int, precio decimal(10,2))
    create table b (id int, id_item int, linea int, precio decimal(10,2))
    go
    insert into a (id_item, precio)
    values 
    (1,5.5),
    (2,12.33),
    (3,13.50),
    (4,0.75),
    (5,1.4),
    (6,3.22),
    (7,6.95),
    (8,8.11),
    (9,9.17);
    go
    insert into b (id, id_item, linea, precio) 
    values
    (1,1,1,0.5),
    (2,1,2,0.5),
    (3,2,1,0.5),
    (4,3,1,0.5),
    (5,4,1,0.5),
    (6,4,2,0.5),
    (7,6,1,0.5),
    (8,6,2,0.5),
    (9,1,1,0.5),
    (10,8,1,0.5),
    (11,8,2,0.5),
    (12,8,3,0.5),
    (13,8,4,0.5),
    (14,9,1,0.5),
    (15,9,2,0.5);
    go

    Entonces ya tengo una tabla a y una tabla b. La tabla a tiene los precios por cada item, y la b, ahora mismo tiene todas sus lineas con un precio erróneo de 0.5.

    La solución.

    UPDATE b
      SET     
       precio = a.precio
    FROM   b
    		  INNER JOIN a ON b.id_item = a.id_item;

    Lo importante de la sentencia update, es que relaciones correctamente las tablas a y b. En el escenario que yo he puesto, se relacionan por el id_item.

    Como la update se hace en una sola instrucción y te modificará todos los registros, antes de aplicarla, puedes hacer una select que te confirme visualmente, esto.

    Select a.id_item, a.precio as precioAPoner, b.precio as precioAnterior
      FROM a INNER JOIN b ON b.id_item = a.id_item;

    Salida de la update (Select * from b)


    • Marcado como respuesta ghiadafne001 martes, 2 de abril de 2019 14:27
    martes, 2 de abril de 2019 4:18