Обновление столбца на основе группы, а затем другие условия - PullRequest
0 голосов
/ 13 января 2020

Моя цель состоит в том, чтобы идентифицировать дубликаты записей на основе одинаковых значений в столбцах.

update table1
set reason = 'duplicate'
where id exists in (select min(id)
                    from table 1
                    where company ='Bestbuy'
                    and account = '123456'
                    group by company, account, date, price, member_id, amount)
and company = 'Bestbuy'
and account = '123456'

Таким образом, все группы дубликатов будут сгруппированы вместе, и в столбце «причина» будет указано, что это дубликат. Сейчас я пытаюсь разрешить ситуацию, когда я могу сгруппировать по всем этим столбцам, но я хочу «исключать» записи только в том случае, если, скажем, «торговый представитель» отличается.

Итак, в этом примере таблицы:

table

Так, например, 1-й, 4-й, 5-й, 9-й и 10-й будут сгруппированы по компаниям, счетам, дате, цене и member_ID. Торговый представитель изменился бы, все же. Я пытаюсь создать подгруппу, которая, как мне кажется, основана на первой группе, которая обновит записи в группе с разными торговыми представителями.

Таким образом, в конце 10-я запись будет исключена.

1 Ответ

1 голос
/ 13 января 2020

Вы, кажется, хотите:

update table1
         set reason = 'duplicate'
where exists (select 1
              from table1 t1 
              where t1.company = table1.company and 
                    t1.account = table1.account and
                    t1.date = table1.date and 
                    t1.price = table1.price and
                    t1.member_id =  table1.member_id and
                    t1.amount = table1.amount and
                    t1.sales_rep <> table1.sales_rep
             ) and 
      company = 'Bestbuy' and 
      account = '123456';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...