¿Cómo encontrar filas duplicadas por una clave pero no duplicadas en todas las columnas?

Estoy trabajando con una tabla que es un extracto de un conjunto de otras tablas. Todas las filas de la tabla de extracción deben ser únicas de acuerdo con las teclas D1, D2 y D3. No son. Parece que un desarrollador anterior intentó resolver este problema utilizando unSELECT DISTINCT en todas las columnas que se consultan desde esta tabla. Esto funcionará, pero solo si cada fila que es un duplicado en (D1, D2, D3) también es un duplicado en las columnas sin clave (ignorando la columna IDENTITY que se agregó a la tabla de extracción).

En otras palabras, las filas dadas son las siguientes:

D1  D2  D3  C4  C5  C6
=== === === === === ===
A   B   C   X1  X2  X3
A   B   C   X1  X2  X3

entonces

SELECT DISTINCT D1, D2, D3, C4, C5, C6
FROM BAD_TABLE

"funcionará", ya que no hay diferencia entre las filas que están duplicadas en (D1, D2, D3). Pero si la mesa contenía

D1  D2  D3  C4  C5  C6
=== === === === === ===
A   B   C   X1  X2  X3
A   B   C   X1  X2  X4

entonces SELECT DISTINCT devolvería dos filas para la clave (A, B, C). Además, tendríamos que decidir cuál de X3 o X4 era el valor "correcto".

Sé cómo encontrar los duplicados en (D1, D2, D3). Incluso sé cómo encontrar los duplicados en todas las columnas (excepto la columna IDENTIDAD):

;
WITH DUPLICATES(D1,D2,D3) AS
(
    SELECT D1, D2, D3
    FROM SOURCE
    GROUP BY D1, D2, D3
    HAVING COUNT(*)>1
)
SELECT S.D1, S.D2, S.D3, S.C4, S.C5, S.C6
FROM SOURCE S
INNER JOIN DUPLICATES D
    ON S.D1 = D.D1 AND S.D2 = D.D2 AND S.D3 = D.D3
ORDER BY S.D1, S.D2, S.D3, S.C4, S.C5, S.C6

La pregunta es, ¿cómo encuentro el subconjunto del conjunto de resultados anterior que están duplicados en (D1, D2, D3), perono duplicados en (D1, D2, D3, C4, C5, C6)?

Respuestas a la pregunta(5)

Su respuesta a la pregunta