Я хотел бы удалить повторяющиеся записи из XRDK/ENAUDFP_RK, я пробовал предложение «где существует» с приведенным ниже SQL, но это удалило все записи в файле, а не только дубликаты.DB2 SQL - удалять дубликаты, где допустимы некоторые дубликаты
Чтобы создать небольшой фон; проблема здесь - дублированный ежедневный файл продаж - вполне возможно, что магазин продает более 1 одного и того же элемента в день, поэтому некоторые дубликаты на самом деле не дублируются, только каждая другая строка является дубликатом.
I.e. если магазин продал 2 из них того же предмета, было бы 4 записи - 2 подлинных продаж, 2 дубликата.
Это SQL, который я использовал для выделения дубликатов;
SELECT * FROM
(SELECT ROWNUMBER() OVER (
PARTITION BY
INCOMP, INTTYP, INTDAT, INMDAT, INSDAT, INTCCY, INERAT, INDEPT,
INSTYL, INCOLO, INMATL, INSIZE, INFIT, INVENX, INEAN, INSKU,
INBATC, INPSIT, INFSIT, INTSIT, INSUPP, INPONO, INSCCY, INREF1,
INREF2, INREF3, INSREF, INDREF, INUNIT, INRETL, INCOST, INLRET,
INLCST, INSCST, INFGRP, INFCAT, INFSEC, INTGRP, INTCAT, INTSEC,
INSTEN, INSTEV, INSVAT, INPLUL, INSVTF, INSFOR, INSFOV, INVCOD,
INTO01, INSP01, INSP02, INSP03, INFNUM, INFDES, INRCOD, INRC01,
INRC02, INRC03, INRC04, INRC05, INRC06, INRC07, INRC08, INRC09,
INRC10, INRV01, INRV02, INRV03, INRV04, INRV05, INRV06, INRV07,
INRV08, INRV09, INRV10, INDELD, INCUID, INIREF, INSOUR, INSNUM)
AS RN, ENAUDFP_RK.*
FROM XRDK/ENAUDFP_RK) AS A
WHERE RN in('2', '4', '6', '8', '10', '12')
Так комбо магазин/пункт UNIQUE ...? –
Нет. Причина в том, что у вас могут быть диспутционные скидки или скидки для персонала и т. Д., Которые применяются в PoS, так эффективно предлагаемая цена за магазин/товар (и связанные с ним другие значения с такой цифрой, как НДС, маржа и т. Д. .) могут отличаться между транзакциями для одного и того же магазина/предмета. Вот почему мое предложение partion by использует все поля в таблице, потому что эффективно это уровень, на котором запись становится UNIQUE. – RDKells