2014-11-04 172 views
0

我想比较两个不同表之间的值,只返回差异,但我努力想出一个查询。SQL比较不匹配值

我有一个雇员标签1和雇员标签2.我比较dev和测试之间的数据。

employee1

id1 cd1 desc1 
1 reg regular 
2 temp temporary 
3 reg regular 
4 new new hire 
5 del terminated 

和Employee2

id2 cd2 desc2 
1 reg regular 
2 temp temporary-456 
3 reg regular-123 
4 new new hire 
5 del terminated 

我的结果集应该是(我将在EMPLID联接,CD)

id cd1 desc1  cd2 desc2    
1 reg regular reg regular-123 
2 temp temporary temp temporary-456 

我试过这种方法

SELECT Distinct EMPL_ID, cd1, desc1, CD2, desc2 
FROM empl 1, empl2 
WHERE EMPL_ID1= EMPL_ID2 
and CD1=cd2 
AND desc1<>desc2  

但这是给重复的结果。谢谢你的帮助!

回答

1

根据你的数据,你需要加入对id,不cd1

SELECT empl1.EMPL_ID, cd1, desc1, CD2, desc2 
FROM empl1 JOIN 
     empl2 
     ON empl1.EMPL_ID = empl2.EMPL_ID and empl1.CD1 = empl2.cd2 and 
      empl1.desc1 <> empl2.desc2 ; 
0

加入的表,但使用id列,而随后的CD1列。无需在查询或者

0

不同试试这个办法比较开发&测试数据

SELECT Distinct emp_dev.EMPL_ID, emp_dev.cd, emp_dev.desc, emp_tst.CD, emp_test.desc 
FROM empl1 emp_dev, empl2 emp_tst 
WHERE emp_dev.EMPL_ID= emp_tst.EMPL_ID 
and (emp_dev.CD=emp_tst.cd OR emp_dev.desc<>emp_tst.desc) 

或者,如果你只是想开发&测试之间的区别:

(SELECT "Record Missing in Test" Note, EMPL_ID, cd, desc 
FROM empl1 emp_dev 
MINUS 
SELECT "Record Missing in Test" Note, EMPL_ID, cd, desc 
FROM empl1 emp_tst) 
union 
(SELECT "Record Missing in Dev" Note, EMPL_ID, cd, desc 
FROM empl1 emp_tst 
MINUS 
SELECT "Record Missing in Dev" Note, EMPL_ID, cd, desc 
FROM empl1 emp_dev) 

希望这帮助