Ниже приведены данные, которые у меня есть.Мне нужно удалить повторяющуюся строку, но параллельно обновлять идентификатор последнего обновления и отметку времени последнего обновления.
Ниже приведены еще 3 столбца, например «Основной ключ», который является уникальным, и отметка времени последнего обновления и идентификатор последнего обновления пользователя.
При выполнении запроса ниже удаляются все 8 строк вместо 4. Я не могу определить, что не так в запросе,
merge into TestTable tgt
using (select ID,
Date,AMT,
Currency,
Value,
count(*) over (partition by ID, Date, AMT,Currency,Value ) grp_count,
row_number() over (partition by ID, Date, AMT,Currency,Value order by ID) rn
from TestTable
)src
-- where rn > 1) src
on (tgt.ID = src.ID and src.rn = 2)
when matched then
update set tgt.LastUpdtUser= 'testing',tgt.LastUpdateTime = SYSDATE
where src.rn = 2
delete where src.rn = 2;
Может кто-нибудь, пожалуйста, совет.Мне просто нужно удалить 4 строки с RN = 2, а строка с RN = 1 должна иметь обновленную метку времени.
Также в реальной базе данных также есть много не повторяющихся записей.Мы не хотим что-либо делать в этих.