我正在尝试运行一个报告脚本,该脚本是我几个月前第二次编写的(季度报告)。我在脚本中已经到达需要特殊的主索引的位置,尤其是在尝试创建表MEMBER_DATA_2
时。当我尝试运行该CREATE VOLATILE TABLE
时,收到了Teradata错误“ [2801]目标表中唯一主键重复”。
通常这没什么大不了的。该脚本要求Member_ID
和Encounter_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,但是我想确定自己没有不要在以后的运行中不断收到假错误。
答案 0 :(得分:0)
好的,同事知道了。 Encounter_Nbr在某些情况下以NULL结尾,并且在我的测试查询中隐藏了有问题的成员(由于Encounter_Nbr = Encounter_Nbr JOIN条件失败)。
要弄清楚为什么Encounter_Nbr不能正确填充。