我有一个包含重复数据的表。表中的字段有一些拼写错误,因此我试图找到此表中所有其他列没有相同信息的行。
例如
部分号码
warehouse int_pn ext_pn
========= ====== ======
1 ABC100 XYZ001
2 ABC100 XYZ001
1 ABC200 XYZ021
2 ABC200 XYY021
3 ABC999 XYZ999
在上表中, int_pn ABC200存在于两个仓库(1和2)中,但在仓库2的 ext_pn 中存在拼写错误
我正在尝试列出 int_pn 出现多次的所有行但是有不同的 ext_pn
http://sqlfiddle.com/#!6/96248d/1
查询结果应返回
结果
warehouse int_pn ext_pn
========= ====== ======
1 ABC200 XYZ021
2 ABC200 XYY021
我很难构建SQL查询来执行此操作
由于
答案 0 :(得分:0)
您可以通过自我加入
来实现这一目标SELECT p1.warehouse
,p1.int_pn
,p1.ext_pn
FROM partnumber AS p1
INNER JOIN partnumber AS p2 ON p1.int_pn = p2.int_pn
AND p1.ext_pn != p2.ext_pn
答案 1 :(得分:0)
您可以按int_pn对数据进行分组,然后计算ext_pn
的不同值http://sqlfiddle.com/#!6/96248d/29
select warehouse, int_pn, ext_pn
from partnumber
where int_pn in (
select int_pn
from partnumber
group by int_pn
having count(distinct ext_pn) >1)