Sql比较不匹配的值



我想比较两个不同表之间的值,只返回差异,但我很难找到查询。

我有一个员工选项卡1和员工选项卡2。我正在比较开发和测试之间的数据。

员工1

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

员工2

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    

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

根据您的数据,您需要加入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  ;

连接表,但使用id列,而不是cd1列。在您的查询中无需区分

尝试这种方式来比较Dev&测试数据

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 ) 

或者,如果您只是想了解dev&测试:

(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) 

希望这能帮助

相关内容

最新更新