Циклическое присвоение

Я имею таблицу клиентов и хотел бы присвоить Продавца каждому клиенту циклическим способом.

Customers  
--CustomerID  
--FName  
--SalespersonID

Salesperson  
--SalespersonID  
--FName  

Так, если бы у меня есть 15 клиентов и 5 продавцов, я хотел бы конечный результат выглядеть примерно так:

CustomerID -- FName -- SalespersonID  
1 -- A -- 1  
2 -- B -- 2  
3 -- C -- 3  
4 -- D -- 4  
5 -- E -- 5  
6 -- F -- 1  
7 -- G -- 2  
8 -- H -- 3  
9 -- I -- 4  
10 -- J -- 5  
11 -- K -- 1  
12 -- L -- 2  
13 -- M -- 3  
14 -- N -- 4  
15 -- 0 -- 5  

и т.д...

Я играл вокруг с этим некоторое время, и пытаюсь записать некоторый SQL для обновления моей таблицы клиентов с соответствующим SalespersonID, но испытываю некоторые затруднения, заставляя это работать.

Любые идеи значительно ценятся!

6
задан Juan Mellado 3 May 2012 в 14:58
поделиться

2 ответа

В SQL Server:

WITH    с AS
        (
        SELECT  *, ROW_NUMBER() OVER ORDER BY (customerID) AS rn
        FROM    customers
        ),
        s AS
        SELECT  *,
                ROW_NUMBER() OVER ORDER BY (SalespersonID) AS rn
        FROM    salesPersons
        )
SELECT  c.*, s.*
FROM    с
JOIN    s
ON      s.rn =
        (с.rn - 1) %
        (
        SELECT  COUNT(*)
        FROM    salesPersons
        ) + 1
7
ответ дан 16 December 2019 в 21:37
поделиться

Любая конкретная платформа?

В SQL Server 2005 и более поздних версиях вы можете использовать ROW_NUMBER (OVER) для назначения номеров строк, а затем использовать ROW_NUMBER из клиентов по модулю количества продавцов, чтобы определить продавца ROW_NUMBER.

1
ответ дан 16 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: