2014-11-04 150 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) 

希望這幫助