Sloučení duplicitních položek v databázi

Popis

Jedná se například o situaci, kdy chce klient zapnout kontrolu duplicit, ale už má v databázi duplicitní společnosti. Každá z nich už má více navázaných položek, takže ruční úprava by byla časově náročná.

Verze

Všechny verze eWay-CRM®

Obtížnost řešení

Vysoká

Postup řešení

Nejprve je třeba duplicity vyhledat. Následující skript vypisuje identifikátor společnosti, IČ, název a RowNumber. Pomocí RowNumber určujeme, která verze společnosti by měla zůstat zachována. Měla by to být ta, která má RowNumber = 1 (to je nejstarší záznam o dané firmě).

SELECT ItemGUID, IdentificationNumber, FileAs, ROW_NUMBER() OVER (PARTITION BY IdentificationNumber ORDER BY ItemCreated) RowNumber
FROM EWD_Companies
WHERE IdentificationNumber IN
(
    SELECT IdentificationNumber
    FROM EWD_Companies
    WHERE IdentificationNumber IS NOT NULL AND LEN(IdentificationNumber) > 1
    GROUP BY IdentificationNumber
    HAVING COUNT(*) > 1
)

Poté provedeme spojení duplicit voláním procedury eWaySP_MergeItems. Zde se uvádí, z jaké položky kopírujeme do jaké.

EXEC eWaySP_MergeItems
    @FolderName = 'Companies',
    @TargetItemGUID = 'BDB68D03-96CE-4ED1-83B3-245813D1CBC9', -- GUID cílové společnosti
    @SourceItemGUID1 = 'BDB68D03-96CE-4ED1-83B3-245813D1CBC9', -- opět GUID cílové společnosti, protože nechceme přepisovat atributy na společnosti, pouze chceme převést vazby
    @SourceItemGUID2 = '684FDB63-2A26-4C56-B82A-AA1A8D2D09F2' -- GUID duplicity

Poté je potřeba duplicitu ještě odmazat:

EXEC eWaySP_DeleteItem @ItemGUID = '684FDB63-2A26-4C56-B82A-AA1A8D2D09F2', @FolderName = 'Companies'

Nyní už je záznam o společnosti v eWay-CRM® přítomen pouze jednou s tím, že jsou zachovány všechny vazby, tedy i vazby z duplicity.