Otra vez publicando un articulo que posiblemente sea muy útil para cuando quieren identificar registros duplicados en SQL SERVER y así realizar algún tipo de actualización sobre dichos registros, por ejemplo. Todo los registro duplicados identificarlo con la letra "X" o algo así.
Me imagino que muchos como yo, iniciaron su carrera en sistema con base de datos en Oracle, y luego tuvimos que migrar a otras como el caso de SQL Server. Bueno resulta que Oracle teníamos el campo el ROWID que nos ayudaba a identificar los registros únicos de cada tabla. Con este campo podíamos hacer preguntas a la base de datos que registros están duplicados por ejemplo, etc.
Me lleve la sorpresa que no es exclusivo de Oracle, también en Sql Server también hay un campo que se llama %%physloc%%. Con el cual podemos hacer las mismas operaciones que hacíamos en Oracle.
Sin tanto rodeos, miremos el siguiente query que es capaz de identificar los registros duplicados por los campos "Campo1" y "Campo2" y una vez localizados actualiza el campo "Campo5".
With a as (
Select u.*,
Count(*) over (partition by Campo1, Campo2) as cnt,
Min(%%physloc%%) over (partition by Campo1, Campo2) as MINROWID,
%%physloc%% as rowid
From Mytable u )
Update a
Set Campo5="X"
Where cnt > 1
And Rowid > MINROWID;
No hay comentarios.:
Publicar un comentario