没有看到重复项时出现重复的主索引错误

Duplicate primary index error when no duplicates seen

我正在尝试 运行 我在几个月前第二次整理的报告脚本(季度报告)。我在脚本中达到了需要唯一主索引的地步,特别是在尝试创建 table MEMBER_DATA_2 时。当我尝试 运行 CREATE VOLATILE TABLE 时,我收到 Teradata 错误“[2801] 目标 table 中重复唯一主键错误”。

通常这没什么大不了的。该脚本要求 Member_IDEncounter_Nbr 字段是唯一的主键。所以我为 MEMBER_DATA_2 复制了 CREATE,从主索引中删除了 UNIQUE 要求,并调用了生成的 volatile table TEMP。我创建了 TEMP 然后 运行 以下

SELECT T.*, B.Cnt
FROM TEMP AS T
    JOIN (SELECT DISTINCT Member_ID, Encounter_Nbr, COUNT(*) AS Cnt FROM TEMP GROUP BY 1,2) AS B
        ON B.Member_ID= T.Member_ID
            AND B.Encounter_Nbr= T.Encounter_Nbr
            AND B.Cnt > 1
ORDER BY B.Cnt DESC, T.Member_ID, T.Encounter_Nbr

问题是上述脚本生成了空结果集。因此,除非我遗漏了什么,否则索引是唯一的,并且应该在没有收到错误消息的情况下创建 MEMBER_DATA_2

现在我可以从 MEMBER_DATA_2CREATE 中删除 UNIQUE 对于这个 运行 因为我知道错误是 bosu,但我想要以确保我不会在以后的 运行s.

中继续收到虚假错误

好的,一位同事想通了。 Encounter_Nbr 在某些情况下以 NULL 结尾,这在我的测试查询中隐藏了有问题的成员(由于 Encounter_Nbr = Encounter_Nbr JOIN 条件失败)。

关于找出 Encounter_Nbr 未正确填充的原因。