es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fusionando dos tablas en T-SQL y reemplazando valores nulos.

Tengo estas dos tablas y lo que quiero es compararlas para saber si hay algún valor nulo en la tabla 2, si lo hay, reemplazar el valor existente en la tabla 1 por el valor nulo en la tabla 2 (según la columna de código que es la clave primaria).

         Tabla 1
Código        Nombre          Puntos
 1        Juan Perez          10
 2        Marco Salgado       5
 3        Carlos Soto         9
 4        Alberto Ruiz        12
 5        Alejandro Castro    5
 10       Jonatan Polanco     0
 11       JD                  NULL


          Tabla 2
Código        Nombre          Puntos
 1        Juan Perez          10
 2        Marco Salgado       5
 3        Carlos Soto         9
 4        Alberto Ruiz        12
 5        Alejandro Castro    5
 10       Nulo                0
 11       JD                  9

La tabla resultante debería verse así:

         Tabla 2
Código        Nombre          Puntos
 1        Juan Perez          10
 2        Marco Salgado       5
 3        Carlos Soto         9
 4        Alberto Ruiz        12
 5        Alejandro Castro    5
 10       Jonatan Polanco     0
 11       JD                  9
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, se pueden seguir los siguientes pasos utilizando T-SQL:

    1. Escribir una instrucción SELECT para comparar las dos tablas usando la columna de clave primaria (Code) para unir las tablas. Esto mostrará todos los valores de la tabla 1 y la tabla 2 lado a lado.
    SELECT t1.Code, t1.Name, t2.Points AS Points2 
    FROM Table1 t1 
    LEFT JOIN Table2 t2 
    ON t1.Code = t2.Code
    
    1. Utilizar una instrucción UPDATE con INNER JOIN para actualizar la tabla Table1 si algún valor nulo existe en Table2 utilizando la misma clave primaria.
    UPDATE Table1 
    SET Points = t2.Points 
    FROM Table1 t1 
    INNER JOIN Table2 t2 
    ON t1.Code = t2.Code 
    WHERE t2.Points IS NULL
    

    La tabla final actualizada Table1 se verá así:

             Table 1
    Code       Name          Points
     1     Juan Perez          10
     2     Marco Salgado       5
     3     Carlos Soto         9
     4     Alberto Ruiz        12
     5     Alejandro Castro    5
     10    Jonatan Polanco     0
     11    JD                  9
    

    Nota: La instrucción UPDATE solo actualizará Table1 donde exista un valor nulo en Table2 para la misma columna de clave primaria (Code).

Comments are closed.