Отредактировано:
INSERT INTO Table3(userid, Username, issue)
SELECT
userid, Username, 'Duplicate UserID'
FROM
(
SELECT
userid,
Username,
RANK() OVER (PARTITION BY userid ORDER BY userid) AS [RANK]
FROM
Table1 --table2
) X
WHERE
[RANK]=2
INSERT INTO Table3(userid, Username, issue)
SELECT
userid, [status], 'Duplicate UserID'
FROM
(
SELECT
userid,
[status],
RANK() OVER (PARTITION BY userid ORDER BY userid) AS [RANK]
FROM
Table2
) X
WHERE
[RANK]=2
Вы можете использовать COLLATE, как показано в разделе СТАРЫЙ, чтобы выполнить проверку с учетом регистра, если вам нужно.
Я использовал RANK = 2 только для вставкиодна запись для дублированного идентификатора пользователя
СТАРЫЙ: вы можете использовать команду COLLATE, чтобы выполнить проверку с учетом регистра
INSERT INTO Table3(UserId, Username, Issue)
SELECT
COALESCE(t1.UserId, t2.UserId),
t1.UserName,
CASE
WHEN (t2.userid IS NULL AND t1.userid IS NOT NULL)
THEN 'User exists in t1 but not in t2'
WHEN (t2.status = 'DELETE' AND t1.userid IS NOT NULL)
THEN 'User Exists in t1, but status in t2 is DELETE'
WHEN (t2.userid IS NOT NULL AND t2.status != 'DELETE' AND t1.userid IS NULL)
THEN 'Non-Deleted user in t2 does not exist in t1'
WHEN t1.userid COLLATE SQL_Latin1_General_CP1_CS_AS = t2.userid COLLATE SQL_Latin1_General_CP1_CS_AS
THEN 'Duplicate userid with same caps'
WHEN t1.userid = t2.userid
THEN 'Duplicate userid but different caps'
END
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
WHERE
(t1.userid IS NOT NULL AND t2.userid IS NOT NULL AND t2.status != 'DELETE' AND t1.userid = t2.userid) OR
(t2.userid IS NULL AND t1.userid IS NOT NULL) OR
(t2.status = 'DELETE' AND t1.userid IS NOT NULL) OR
(t2.userid IS NOT NULL AND t2.status != 'DELETE' AND t1.userid IS NULL)