Как удалить дубликаты с каждого месяца в PL / SQL - PullRequest
0 голосов
/ 08 ноября 2019

У меня недавно была проблема с дублированными значениями, возникающими в течение одного месяца.
У меня есть одна таблица с ОДНЫМ продуктом и разными ПОДПИСЧИКАМИ.
Продукт основан на подписке и иногда случается, что клиент, в период одногоМесяц активирует и деактивирует продукт несколько раз - таким образом, составляя несколько строк.
Клиент может активировать продукт на несколько месяцев без изменений - таким образом, в этот период будет только одна строка - дата начала. Я добавляю картинку с текущими и желаемыми результатами

В этом случае мне нужно получить только одну строку для каждого покупателя в месяц с MAX (start_date), как на рисунках. Как на картинке. Я пытался использовать функцию ROWNUM, , но я не знаю, как справляться с одной строкой условия каждого месяца.

Спасибо за любой совет

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вы можете удалить дубликаты с помощью ROWID

Посмотрите, как это сделать https://www.google.com/amp/s/m.wikihow.com/Delete-Duplicate-Records-in-Oracle%3famp=1

0 голосов
/ 08 ноября 2019

В будущем, пожалуйста, включите образцы данных и примеры того, что вы пробовали. Попробуйте это:

INSERT INTO targettable( customer_id
                       , subscription_product_id
                       , start_date )
      SELECT customer_id
           , subscription_product_id
           , MAX( start_date )
        FROM sourcetable
    GROUP BY customer_id
           , subscription_product_id
           , TRUNC( start_date, 'MM' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...