主数据表:识别错误记录

时间:2017-02-13 06:40:42

标签: sql oracle join

我有一张主表,我正在存储医生的数据。 我有表HCP,医生来自不同的来源,并且正在存储。

RowID Name   Professional_designation
1     Robert  MD
1     Robert  RN
2     Andy    MD

在上表中,Robert的数据存在冲突,因为他不能同时在我们的系统中成为MD和RN。

问题: 我需要一个查询,它将为我提供ROWID列表,其中Professional_designation不匹配,但它们具有相同的rowid。 我相信自我加入将是必需的,但不是100%肯定。

2 个答案:

答案 0 :(得分:1)

尝试此操作以获取所需的行ID

SELECT ROWID,Name
FROM
(
SELECT ROwID,Name,
       ROW_NUMBER() OVER(PARTITION BY ROWID,Name ORDER BY Professional_designation) as seqNum
FROM HCP
) Tmp
WHERE seqNum > 1

您可以使用自我加入在HCP表中获取不匹配的Professional_designation的医生记录列表,如下所示

select t1.* from HCP t1
join HCP  t2 on t1.RowID = t2.RowID and t1.Name=t2.Name
where t1.Professional_designation<>t2.Professional_designation

答案 1 :(得分:0)

是的,你可以使用自我加入来做。

select distinct h1.Row_id from hcp h1 join hcp h2 on h1.name=h2.name where h1.row_id=h2.row_id and h1.Professional_designation != h2.Professional_designation;