当没有重复项时重复主索引错误

时间:2019-04-03 13:50:42

标签: sql indexing teradata

我正在尝试运行一个报告脚本,该脚本是我几个月前第二次编写的(季度报告)。我在脚本中已经到达需要特殊的主索引的位置,尤其是在尝试创建表MEMBER_DATA_2时。当我尝试运行该CREATE VOLATILE TABLE时,收到了Teradata错误“ [2801]目标表中唯一主键重复”。

通常这没什么大不了的。该脚本要求Member_IDEncounter_Nbr字段是唯一的主键。因此,我为CREATE复制了MEMBER_DATA_2,从主索引中删除了UNIQUE的要求,并调用了结果易失表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而不会收到错误消息。

现在,我可以从UNIQUE的{​​{1}}中删除MEMBER_DATA_2,因为我知道错误是bosu,但是我想确定自己没有不要在以后的运行中不断收到假错误。

1 个答案:

答案 0 :(得分:0)

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

要弄清楚为什么Encounter_Nbr不能正确填充。