通过stackoverflow搜索,我能够使用以下查询以循环方式将我的员工分配给客户:
在SQL Server
:
WITH с AS
(
SELECT *, ROW_NUMBER() OVER ORDER BY (CustomerID) AS rn
FROM customers
),
s AS
SELECT *,
ROW_NUMBER() OVER ORDER BY (EmployeeID) AS rn
FROM employees
)
SELECT c.*, s.*
FROM с
JOIN s
ON s.rn =
(с.rn - 1) %
(
SELECT COUNT(*)
FROM employees
) + 1
但是,我希望更进一步,根据客户的位置分配我的员工。这是一个例子:
Customers
--CustomerID
--StoreZip (I matched the closest store to each customer)
Salesperson
--EmployeeID
--EmployeeZip
所以,如果我有15位客户和5位销售人员,我希望最终结果看起来像这样:
CustomerID -- StoreZip -- EmployeeID -- EmployeeZip
1 -- 28031 -- 2 -- 28031
2 -- 28031 -- 3 -- 28031
3 -- 28031 -- 8 -- 28031
4 -- 32216 -- 4 -- 32216
5 -- 32216 -- 15 -- 32216
6 -- 32216 -- 6 -- 32216
7 -- 32216 -- 12 -- 32216
8 -- 32216 -- 1 -- 32216
9 -- 28262 -- 5 -- 28262
10 -- 28262 -- 13 -- 28262
11 -- 28262 -- 9 -- 28262
12 -- 28262 -- 7 -- 28262
13 -- 28203 -- 10 -- 28203
14 -- 28203 -- 14 -- 28203
15 -- 28203 -- 11 -- 28203
等...