我想比较两个不同的表之间的值,只返回差异,但我很难提出一个查询。
我有一个员工标签1和员工标签2.我正在比较开发和测试之间的数据。
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
但这会产生重复的结果。谢谢你的帮助!
答案 0 :(得分: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 ;
答案 1 :(得分:0)
加入表但使用id列而不是cd1列。无需在查询中使用
答案 2 :(得分:0)
尝试这种方式来比较Dev&amp;测试数据
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)
希望这有帮助