Anda dapat melakukannya dengan menggabungkan tabel itu sendiri, dengan mengatakan bahwa semua D sama dan setidaknya satu dari C tidak sama.
CREATE TABLE #Source (
D1 VARCHAR(2),
D2 VARCHAR(2),
D3 VARCHAR(2),
C4 VARCHAR(2),
C5 VARCHAR(2),
C6 VARCHAR(2) );
INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X3');
INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X4');
INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');
INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');
SELECT S1.D1, S1.D2, S1.D3, S1.C4 C4_1, S2.C4 C4_2, S1.C5 C5_1, S2.C5 C5_2, S1.C6 C6_1, S2.C6 C6_2
FROM
#Source S1
INNER JOIN
#Source S2
ON
( S1.D1 = S2.D1
AND S1.D2 = S2.D2
AND S1.D3 = S2.D3
AND ( S1.C4 <> S2.C4
OR S1.C5 <> S2.C5
OR S1.C6 <> S2.C6
)
);
DROP TABLE #Source;
Memberikan hasil sebagai berikut:
D1 D2 D3 C4_1 C4_2 C5_1 C5_2 C6_1 C6_2
---- ---- ---- ---- ---- ---- ---- ---- ----
A B C X1 X1 X2 X2 X4 X3
A B C X1 X1 X2 X2 X3 X4
Perhatikan juga bahwa ini kompatibel dengan MS SQL 2000 seperti yang Anda tunjukkan nanti diperlukan di Cara Mengonversi Query SQL menggunakan Ekspresi Tabel Umum menjadi One Without (untuk SQL Server 2000) .