比较两个数据库中的多个列数据
问题描述:
我有两个完全相同的数据库,整个数据堆从1到另一个都被引入,无论出于何种原因,似乎没有标志指示哪个是迁移记录。比较两个数据库中的多个列数据
即时尝试要做的是比较每个数据库中的多个字段,以查看哪些记录被迁移。
因此,例如,DB1可能在作业表中有10,000个作业,而DB2(旧的)有2,000个作业。我知道那些2000个工作被计入DB1的10,000个工作中,但是如果不比较多个列,我就无法区分这两个工作,直到我得到正确的数字。
我尝试以下,但无疾而终,并给我结果0:
SELECT COUNT(*) FROm Job j
FULL OUTER JOIN [DB2.dbo.job jc ON CAST(j.jobID AS NVARCHAR(20)) = jc.jobTitle
WHERE j.AMID = jc.amid
AND j.ClientID = jc.clientID
AND j.personID = jc.ClientID
AND j.JobReceivedDate = jc.JobReceivedDate
AND j.JobTitle = jc.JobTitle
任何帮助,在此,将不胜感激。
-----编辑---------------------------------------- -------------------返回
在超过300万行的代码如下结果:
SELECT
d1.JobTitle, d1.AMID, d1.CLIENTID, d1.PersonID,
d2.JobTitle, d2.AMID, d2.CLIENTID, d2.PersonID,
[RESULT] = CASE
WHEN (d1.AMID = d2.AMID OR (d1.AMID IS NULL AND d2.AMID IS NULL))
AND (d1.CLIENTID = d2.CLIENTID OR (d1.CLIENTID IS NULL AND d2.CLIENTID IS NULL))
AND (d1.PersonID = d2.PersonID OR (d1.PersonID IS NULL AND d2.PersonID IS NULL))
THEN 1 ELSE 0 END
FROM [db1].dbo.Job AS d1
FULL OUTER JOIN
[db2].dbo.Job AS d2
ON D1.JobTitle = D2.JobTitle
只有84000在这个表中的记录。
-----编辑---------------------------------------- ---------------------
更改我的初始查询到以下行之有效:
SELECT DISTINCT j.jobID, jc.jobID, jc.JobTitle, j.JobTitle FROM Job j
FULL OUTER JOIN [Gulf-Jobs].dbo.job jc ON j.JobTitle = jc.JobTitle
WHERE j.JobTitle = jc.JobTitle
AND j.ClientID = jc.clientID
AND j.personID = jc.personID
AND j.JobReceivedDate = jc.JobReceivedDate
AND j.JobTitle = jc.JobTitle
AND j.JobUpdatedDate = jc.JobUpdatedDate
AND j.JobTypeID = jc.JobTypeID
AND j.JobStatusID = jc.JobStatusID
ORDER BY Jc.JobID
答
回答的评论
在您加入的第一个代码块(j.jobID AS NVARCHAR(20))= jc.jobTitle中,这就是为什么您的计数为0,但您在第二个代码块中加入jobtitle。如果没有,你的第一个代码按预期工作,在情况下,如果任何数据为空请我们inull(列,“”)每列
所以查询将
SELECT COUNT(*) FROm Job j
FULL OUTER JOIN [DB2.dbo.job jc ON j.jobTitle = jc.jobTitle
WHERE j.AMID = jc.amid
AND j.ClientID = jc.clientID
AND j.personID = jc.ClientID
AND j.JobReceivedDate = jc.JobReceivedDate
按照此链接:http: //stackoverflow.com/questions/14441579/compare-the-value-of-multiple-columns-from-two-different-databases。希望有帮助。 – vanloc
'作业j内部连接DB2.dbo.job上的select count(*)j.AMID = jc.amid AND j.ClientID = jc.clientID AND j.personID = jc.ClientID AND j.JobReceivedDate = jc.JobReceivedDate 和j.JobTitle = jc.JobTitle' 试试这个 – Pream
感谢vanloc,每当我尝试运行脚本建议它给了我300万行有只有84000总表中有 –