没有看到重复项时出现重复的主索引错误
Duplicate primary index error when no duplicates seen
我正在尝试 运行 我在几个月前第二次整理的报告脚本(季度报告)。我在脚本中达到了需要唯一主索引的地步,特别是在尝试创建 table MEMBER_DATA_2
时。当我尝试 运行 CREATE VOLATILE TABLE
时,我收到 Teradata 错误“[2801] 目标 table 中重复唯一主键错误”。
通常这没什么大不了的。该脚本要求 Member_ID
和 Encounter_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_2
的 CREATE
中删除 UNIQUE
对于这个 运行 因为我知道错误是 bosu,但我想要以确保我不会在以后的 运行s.
中继续收到虚假错误
好的,一位同事想通了。 Encounter_Nbr 在某些情况下以 NULL 结尾,这在我的测试查询中隐藏了有问题的成员(由于 Encounter_Nbr = Encounter_Nbr JOIN 条件失败)。
关于找出 Encounter_Nbr 未正确填充的原因。
我正在尝试 运行 我在几个月前第二次整理的报告脚本(季度报告)。我在脚本中达到了需要唯一主索引的地步,特别是在尝试创建 table MEMBER_DATA_2
时。当我尝试 运行 CREATE VOLATILE TABLE
时,我收到 Teradata 错误“[2801] 目标 table 中重复唯一主键错误”。
通常这没什么大不了的。该脚本要求 Member_ID
和 Encounter_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_2
的 CREATE
中删除 UNIQUE
对于这个 运行 因为我知道错误是 bosu,但我想要以确保我不会在以后的 运行s.
好的,一位同事想通了。 Encounter_Nbr 在某些情况下以 NULL 结尾,这在我的测试查询中隐藏了有问题的成员(由于 Encounter_Nbr = Encounter_Nbr JOIN 条件失败)。
关于找出 Encounter_Nbr 未正确填充的原因。