Expertos, necesito hacer coincidir el valor de una celda particular (en la Variable1) con otra celda (de la Variable2) que se colocó en Observación diferente.

Compartiré el conjunto de ejemplos para que sea una imagen clara.

ID D1   D2   D1x D2x
1  Med1 Med4 abc Null
2  Med2 Med5 def Null
3  Med3 Med3 ghi Null
4  Med4 Med6 jkl Null
5  Med5 Med1 mno Null

Aquí el D1 se refiere al nombre del medicamento, D1x se refiere al nombre genérico. Actualicé el valor Dx1 manualmente. Todo lo que necesito para actualizar los valores coincidentes en todas las variables consecutivas. Salida esperada: (usando la consulta de actualización)

ID D1   D2   D1x D2x
1  Med1 Med4 abc jkl
2  Med2 Med5 def mno
3  Med3 Med3 ghi ghi
4  Med4 Med6 jkl Null
5  Med5 Med1 mno abc

Sugiera una consulta de actualización de código para que pueda utilizar mi conjunto de datos para un análisis más detallado.

0
Sathish Jay 13 feb. 2020 a las 11:02

2 respuestas

La mejor respuesta

Puede escribir su consulta de actualización como la siguiente usando una autounión.

UPDATE mt
SET d2x = s.d1x
FROM mytable mt
INNER JOIN mytable s ON s.d1 = mt.d2

Nota : Reemplace mytable con el nombre real de la tabla.

0
PSK 13 feb. 2020 a las 08:12
DECLARE @T TABLE(ID INT, D1 NVARCHAR(200), D2 NVARCHAR(200), D1x NVARCHAR(200), D2x NVARCHAR(200));

INSERT INTO @T (ID,D1,D2,D1x) VALUES
(1, 'Med1', 'Med4', 'abc'),
(2, 'Med2', 'Med5', 'def'),
(3, 'Med3', 'Med3', 'ghi'),
(4, 'Med4', 'Med6', 'jkl'),
(5, 'Med5', 'Med1', 'mno');

UPDATE t1
SET D2x = t2.D1x
OUTPUT 
  INSERTED.ID,
  INSERTED.D1,
  INSERTED.D2,
  INSERTED.D1x,
  INSERTED.D2x
FROM @T t1
LEFT JOIN @T t2
  ON t1.D2 = T2.D1
0
Leszek Mazur 13 feb. 2020 a las 08:12