Fuente TablaProblemas con la instrucción MERGE SQL Server
Id, Name, Address
1 A #202
1 A #203
1 A #204
2 A #202
tabla de objetivos
después de combinación
Id, Name, Address
1 A #202
2 A #202
estoy usando este SQL
create table #S (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
create table #T (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
INSERT #S values(1, 'A', '#202')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#204')
INSERT #T values(1, 'A', NULL)
MERGE #T USING
(
Select id, name, address
from #S
) AS S(id,name,address)
on #T.id=S.id and #T.Name=S.Name
when not matched THEN
INSERT values(S.id,S.Name, S.Address)
when matched then
update set Address = S.Address;
GO
Select * from #T
GO
Select * from #S
GO
Esto provoca un error
Msg 8672, nivel 16, estado 1, línea 18
La instrucción MERGE intentó actualizar o borrar la misma fila más de una vez. Esto sucede cuando una fila de destino coincide con más de una fila fuente. Una instrucción MERGE no puede ACTUALIZAR/ELIMINAR la misma fila de la tabla objetivo varias veces. Refina la cláusula ON para garantizar que una fila objetivo coincida como máximo con una fila fuente, o utiliza la cláusula GROUP BY para agrupar las filas fuente.
Quiero actualizar la fila en A con el valor de Dirección de cualquiera de los tres valores coincidentes. ¿Como hacer esto?
Quiero actualizar la fila A con valor de Dirección de cualquiera de los tres valores coincidentes –
, pero ¿cómo se determina cuál de ellos usar? – HLGEM
Utilicé Row_Number es tanto el origen como el destino (vista). A continuación, los criterios de coincidencia incluían una condición adicional, si los números pares son iguales junto con (dirección.destino isnull o (dirección.txt = dirección.s)) –