Untuk membandingkan T1 (PK, A, B) dan T2 (PK, A, B).
Pertama, bandingkan kumpulan kunci utama untuk mencari nilai kunci yang hilang di kedua sisi:
SELECT T1.*, T2.* FROM T1 FULL OUTER JOIN T2 ON T1.PK=T2.PK WHERE T1.PK IS NULL OR T2.PK IS NULL;
Kemudian daftarkan semua ketidakcocokan nilai:
SELECT T1.PK, 'A' AS columnName, T1.A AS leftValue, T2.A AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.A,0) != COALESCE(T2.A,0)
UNION ALL
SELECT T1.PK, 'B' AS columnName, T1.B AS leftValue, T2.B AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.B,0) != COALESCE(T2.B,0)
A dan B harus berjenis sama. Anda dapat menggunakan INFORMATION SCHEMA untuk menghasilkan SELECT. Jangan lupa COALESCE untuk juga menyertakan hasil IS NULL. Anda juga bisa menggunakan FULL OUTER JOIN dan COALESCE (T1.PK, 0) = COALESCE (T2.PK, 0).
Misalnya untuk kolom berjenis varchar:
SELECT concat('SELECT T1.PK, ''', COLUMN_NAME, ''' AS columnName, T1.', COLUMN_NAME, ' AS leftValue, T2.', COLUMN_NAME, ' AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.',COLUMN_NAME, ',0)!=COALESCE(T2.', COLUMN_NAME, ',0)')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='T1' AND DATA_TYPE IN ('nvarchar','varchar');