22 lines
919 B
SQL
22 lines
919 B
SQL
-- Duplikate entfernen: pro Gruppe (buchungstag, wertstellung, wert, buchungstext) die niedrigste id behalten
|
|
DELETE bt
|
|
FROM bank_transactions bt
|
|
INNER JOIN (
|
|
SELECT MIN(id) AS keep_id, buchungstag, wertstellung, wert, buchungstext
|
|
FROM bank_transactions
|
|
GROUP BY buchungstag, wertstellung, wert, buchungstext
|
|
HAVING COUNT(*) > 1
|
|
) dup ON bt.buchungstag = dup.buchungstag
|
|
AND bt.wertstellung = dup.wertstellung
|
|
AND bt.wert = dup.wert
|
|
AND bt.buchungstext = dup.buchungstext
|
|
AND bt.id > dup.keep_id;
|
|
|
|
-- Unvollständige Batches entfernen (row_count stimmt nicht mit tatsächlichen Zeilen überein)
|
|
DELETE FROM bank_import_batches
|
|
WHERE id NOT IN (SELECT DISTINCT batch_id FROM bank_transactions)
|
|
AND row_count > 0;
|
|
|
|
-- UNIQUE-Constraint gegen Doppel-Importe
|
|
ALTER TABLE bank_transactions
|
|
ADD CONSTRAINT uq_bank_tx UNIQUE (buchungstag, wertstellung, wert, buchungstext(200));
|