【发布时间】:2014-03-19 08:51:45
【问题描述】:
我需要比较两个表(表 A 为生产数据,表 B 为旧数据)之间的电子邮件记录(按电子邮件地址)以找出差异并将结果显示在“新建”、“删除”等列中.
如果存在于表A中,而不存在于表B中,则应标记为“新建”
否则如果存在于表B中而不是表A中,则应标记为“删除”
如果出现在两个表中,则应标记为“维护”
我想要这样的结果
DisplayName LastName Diremail Result
==============================================
XXX XXX a@a.com New
ABC ABC 1@a.com Delete
DDD DDD 2@a.com Maintain
我的代码如下:
SELECT b.DisplayName,
b.LastName,
b.diremail,
Result = CASE WHEN a.DirEmail IS NULL THEN 'New'
when b.DirEmail IS null then 'delete'
else 'Maintain'
END
FROM vHRIS_StaffDB b
LEFT JOIN HRIS_DL_Lists a
ON a.DirEmail = b.DirEmail
WHERE (
a.DirEmail IS NULL
OR a.DisplayName != b.DisplayName
)
但数据不正确,因为代码不返回应该“删除”的记录 (在表 b 中找到,不在表 a 中)
请指教。谢谢。
【问题讨论】:
-
听起来您正在尝试同步两个数据库(或两个数据库中的至少两个表)。
标签: sql sql-server join compare