Обновление столбца SQL с информацией из другой таблицы, где столбец ссылки имеет дубликат - PullRequest
0 голосов
/ 21 ноября 2018

таблица клиентов1

ID----AccName--Customer
1-----zzz1 --------paul
2-----zzz1 --------joe
3-----aaa2--------ann
4-----zzz2--------don

необходимо обновить таблицу продаж с идентификатором клиента, таблица должна выглядеть следующим образом

таблица продаж2

ID----AccName----CustID-------Customer---balance
1-----zzz1---------------2----Joe--- ----------$10
2-----zzz2---------------4----Don ----------$19
3-----zzz1---------------1----Paul ----------$27

update Table2
set Table2.CustID = Table1.ID
from Table2 left join Table1 on Table2.AccName = Table1.AccName

* проблема в том, что он возвращает тот же CustID

продажи Таблица2

ID----AccName----CusID---------Customer-----balance
1-----zzz1---------------1-----joe ----------$10
2-----zzz2---------------4-----don ----------$19
3-----zzz1---------------1-----paul ----------$27

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я предполагаю из вашего синтаксиса, что вы используете SQL Server.

Кажется, вы хотите перечислить значения.Как то так:

with toupdate as (
      select t2.*,
             row_number() over (partition by accname order by id) as seqnum
      from table2 t2
     )
update toupdate
    set CustID = t1.ID
    from toupdate join
         (select t1.*,
                 row_number() over (partition by accname order by id) as seqnum
          from table1 t1
         ) t1
         on toupdate.accnum = t1.accnum and toupdate.seqnum = t1.seqnum;
0 голосов
/ 21 ноября 2018

Полагаю, вам также следует рассмотреть возможность включения в форму идентификатора клиента обеих таблиц?

    update Table2 
       set Table2.CustID = Table1.ID 
     from Table2 
left join Table1 
       on Table2.AccName = Table1.AccName
      and Table2.Customer= Table1.Customer
...