Я столкнулся с ситуацией, когда мне нужно удалить столбец из таблицы на основе условия из другой таблицы. Позвольте мне разбить его на вас!
Существует мастер-таблица MORTALITY (содержащая информацию относительно умершие лица) И еще одна таблица, называемая таблицей INC_MORTALITY (добавочная смертность), которая обновляется еженедельно. Примечание. Обе таблицы имеют одинаковый формат
. Таким образом, новые записи на этой неделе содержат как дополнительных умерших, так и обновления старые данные для ранее доставленных записей. Это один файл со столбцом (OP_DIRECTIVE), указывающим, является ли это «добавить» или «удалить» запись.
Обработка еженедельных файлов Чтобы включить файл еженедельного обновления, нам нужно выполнить следующие шаги по порядку. 1. Удалите строки в основной таблице, которые имеют OP_DIRECTIVE = 'D' в качестве операции в еженедельном обновлении. Для данной строки удаления необходимо удалить одну строку в основной таблице, которая соответствует записи удаления во всех полях, кроме столбца операции «D». Предупреждение: убедитесь, что вы удаляете или помечаете как удаленную только одну запись, даже если более одной исторической записи полностью соответствует этой новой записи удаления. 2. Добавьте строки в основную таблицу, которые появятся в файле «Добавить». После выполнения этих шагов ваша мастер-таблица должна быть самой современной мастером смерти.
 (Примечание: ЭТИ ТАБЛИЦЫ НЕ ИМЕЮТ ПЕРВИЧНЫЕ КЛЮЧИ) ТАК ЧТО Я ПОПЫТАЛ:
DEL FROM MORTALITY MI
WHERE MI.DATA_SOURCE = INC_MORTALITY.DATA_SOURCE
AND MI.DD_IMP_FLAG = INC_MORTALITY.DD_IMP_FLAG
AND MI.DOB = INC_MORTALITY.DOB
AND MI.DOD = INC_MORTALITY.DOD
AND MI.DEATH_VERIFICATION = INC_MORTALITY.DEATH_VERIFICATION
AND MI.GENDER_PROBABILITY = INC_MORTALITY.GENDER_PROBABILITY
AND MI.GENDER = INC_MORTALITY.GENDER
AND MI.TOKEN_1 = INC_MORTALITY.TOKEN_1
AND MI.TOKEN_2 = INC_MORTALITY.TOKEN_2
AND MI.TOKEN_4 = INC_MORTALITY.TOKEN_4
AND MI.TOKEN_5 = INC_MORTALITY.TOKEN_5
AND MI.TOKEN_7 = INC_MORTALITY.TOKEN_7
AND MI.TOKEN_16 = INC_MORTALITY.TOKEN_16
AND MI.TOKEN_KEY = INC_MORTALITY.TOKEN_KEY
AND INC_MORTALITY.OP_DIRECTIVE = 'D'
Вышеуказанный оператор Delete удалит все строки, удовлетворяющие условиям, мое требование состоит в том, чтобы удалить только одну запись, даже если более одной исторической записи полностью соответствует этой новой записи удаления, и если я включил ROW NUMBER () stmt, как показано ниже моего DELETE STMT не работает
QUALIFY ROW_NUMBER() OVER (PARTITION BY MI.DATA_SOURCE,MI.DOB,MI.DOD
ORDER BY MI.DOD DESC ) = 1
Любые предложения о том, как подходить к этому сценарию, спасибо!