Ошибка дублирования первичного индекса, если дубликатов не обнаружено - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь запустить сценарий отчета, который я собрал пару месяцев назад во второй раз (квартальный отчет). Я достиг точки в сценарии, когда мне требуется уникальный первичный индекс, особенно при попытке создать таблицу 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 из MEMBER_DATA_2 CREATE для этого прогона, так как я знаю, что ошибка bosu, но я хочу убедиться, что я не получаю фиктивную ошибку на будущих пробегах.

1 Ответ

0 голосов
/ 03 апреля 2019

Хорошо, коллега понял это.Encounter_Nbr в некоторых случаях заканчивался NULL, и это скрывало нарушающие элементы в моем тестовом запросе (из-за сбоя условия Encounter_Nbr = Encounter_Nbr JOIN).

On, чтобы выяснить, почему Encounter_Nbr не заполняется правильно.

...