7

我有一个客户表,并希望以循环方式为每个客户分配一个销售人员。

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  

ETC...

我一直在玩这个,正在尝试编写一些 SQL 来使用适当的 SalespersonID 更新我的客户表,但是在让它工作时遇到了一些麻烦。

任何想法都非常感谢!

4

2 回答 2

7

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
于 2010-03-19T17:00:26.350 回答
2

有什么特别的平台吗?

在 SQL Server 2005 及更高版本中,您可以使用 ROW_NUMBER (OVER) 来分配行号,然后使用来自客户的 ROW_NUMBER 对销售人员的数量进行取模来确定销售人员的 ROW_NUMBER。

于 2010-03-19T16:59:01.113 回答