Si está utilizando SQL Server 2005 o posterior (y las etiquetas para indicar su pregunta de SQL Server 2008), se puede utilizar la jerarquización funciones para devolver los registros duplicados después de la primera, si el uso de uniones es menos deseable o poco práctico por alguna razón. El siguiente ejemplo muestra esto en acción, donde también funciona con valores nulos en las columnas examinadas.
create table Table1 (
Field1 int,
Field2 int,
Field3 int,
Field4 int
)
insert Table1
values (1,1,1,1)
, (1,1,1,2)
, (1,1,1,3)
, (2,2,2,1)
, (3,3,3,1)
, (3,3,3,2)
, (null, null, 2, 1)
, (null, null, 2, 3)
select *
from (select Field1
, Field2
, Field3
, Field4
, row_number() over (partition by Field1
, Field2
, Field3
order by Field4) as occurrence
from Table1) x
where occurrence > 1
Aviso después de ejecutar este ejemplo que se excluye el primer registro de cada "grupo", y que los registros con valores nulos se manejan correctamente.
Si no tiene una columna disponible para ordenar los registros dentro de un grupo, puede utilizar las columnas de partición por columnas de orden por.
su pseudo código es ambiguo, además de que no definen orden según la cual no desea que la primera. sugiero que den algunos datos de muestra. – Unreason