Sacando duplicados en una consulta T-SQL

En algunas situaciones necesitamos en un resultset obtener solo un registro cuando el mismo esta mas de una vez y no podemos usar la instrucción DISTINCT.

Supongamos el siguiente ejemplo:

 

2017-04-01_10-19-36

Supongamos que lo que necesitamos es solo traer un código , por ejemplo: el código 200 esta en dos registros y nos queremos quedar con uno de ellos, lo mismo sucede con el código 400.

Para poder hacer una query simple lo que vamos a utilizar es una CTE y la función Row_number() ambas están disponibles desde SQL Server 2005.

 

SNAGHTMLa7130bb

Ahora si deseamos borrar los duplicados y quedarnos con un solo registro podemos usar algo similar a lo anterior pero con la instrucción DELETE