邮政编码上匹配的循环分配

时间:2015-07-28 20:42:50

标签: sql sql-server-2008

通过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  

等...

0 个答案:

没有答案