Вы можете сделать NOT EXISTS
для строк, которые не соответствуют по вашим критериям
SELECT Columns
FROM TableA
Where NOT EXISTS
(
SELECT 1
FROM TableB
WHERE 1=1
AND TableA.Column1 = TableB.Column1
AND TableA.Column2 = TableB.Column2
AND TableA.Column3 = TableB.Column3
AND TableA.Column4 = TableB.Column4
)
Вы можете сделать запрос для строк, которые соответствуют вашему критерию, но не соответствуют остальным данным
SELECT Columns
FROM TableA
INNER JOIN TableB
ON TableA.Column1 = TableB.Column1
AND TableA.Column2 = TableB.Column2
AND TableA.Column3 = TableB.Column3
AND TableA.Column4 = TableB.Column4
)
WHERE TableA.Column11 <> TableB.Column11
OR TableA.Column12 <> TableB.Column12
OR TableA.Column13 <> TableB.Column13
OR TableA.Column14 <> TableB.Column14
Теперь, когда у вас есть оба набора отключенных записей, вы можете применить необходимую логику.
Большинство людей здесь дадут вам ответы на основе SET вместо ответов на основе CURSOR. В StackOverflow вы найдете много материала о том, почему бы не использовать CURSOR.