2010-03-19 56 views
6

我有一個Customers表並希望以循環方式將銷售人員分配給每個客戶。循環分配

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來更新我的Customers表與適當的SalespersonID,但我有一些麻煩讓它工作。

任何想法,非常感謝!

回答

6

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 
+0

是有一個錯字(的SalesID的customerID代替)? ----------------------> SELECT *, ROW_NUMBER()OVER ORDER BY(customerID)AS rn FROM salesPersons – nee21 2018-01-19 19:28:05

+0

@ nee21:是的,謝謝 – Quassnoi 2018-01-19 19:30:33

1

任何特定平臺?

在SQL Server 2005及更高版本中,您可以使用ROW_NUMBER(OVER)分配行號,然後使用您的ROW_NUMBER模塊從銷售人員的數量中確定銷售人員ROW_NUMBER。