Поиск дублирующих проводок

-- Вывод дублирующих бюджетных проводок с меньшим ID
SELECT DISTINCT(count(a.document_id)) FROM PLANLOG a
JOIN DOCUMENT d ON d.ID = a.DOCUMENT_ID
 WHERE EXISTS( SELECT 1
                 FROM PLANLOG b
                WHERE a.BUDGCARRY_ID = b.BUDGCARRY_ID
                  AND a.DOCUMENT_ID = b.DOCUMENT_ID
                  AND a.DELTA_AMT = b.DELTA_AMT
                  AND a.ID < b.ID )
   AND d.DOCUMENTCLASS_ID = 11
   AND a.CARRY_DATE > to_date('18.08.2023', 'dd.mm.yyyy');

-- Удаляем дублирующую бюджетную проводку с меньшим ID
DELETE FROM PLANLOG a
 WHERE EXISTS( SELECT 1
                 FROM PLANLOG b
                WHERE a.BUDGCARRY_ID = b.BUDGCARRY_ID
                  AND a.DOCUMENT_ID = b.DOCUMENT_ID
                  AND a.DELTA_AMT = b.DELTA_AMT
                  AND a.ID < b.ID )
   AND a.DOCUMENT_ID in (<ID, можно через запятую>);

Комментарии

Популярные сообщения из этого блога

Linux (РедОС). Сброс пароля

TRUNCATE / DELETE / DROP или как очистить таблицу

КБК. КВФО - Код вида финансового обеспечения (деятельности)

SQL Error [53200]: ОШИБКА: нехватка разделяемой памяти Подсказка: Возможно, следует увеличить параметр max_locks_per_transaction

РедОС. Подключение к сетевой папке