2010-03-19 12 views
6

Müşteriler tablosum var ve her müşteriye bir satış elemanı atamalarını bir rondela şeklinde vermek istiyoruz. Ben 15 müşteriler ve 5 satış temsilcileri varsaYuvarlak robin ataması

Customers 
--CustomerID 
--FName 
--SalespersonID 

Salesperson 
--SalespersonID 
--FName 

yani, ben böyle bir şey bakmak, sonucu istiyorum: vb

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 

... Ben

oynuyorum biraz bununla ilgili olarak ve Müşterilerim tablosunu uygun SalespersonID ile güncellemek için bir miktar SQL yazmayı deniyorum, ancak işe yaramakta zorluk çekiyorum.

Herhangi bir fikir büyük beğeni topluyor!

cevap

6

:

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

(customerID yerine SalesID ait) bir yazım hatası var mı? ----------------------> SELECT *, ROW_NUMBER() SİPARİŞ ADRESİNDE (müşteri kimliği) AS rn SATIŞLARDAN SATIŞLAR – nee21

+0

@ nee21: teşekkürler – Quassnoi

1

Herhangi bir platform?

SQL Server 2005 ve sonraki sürümlerde, satır numaraları atamak için ROW_NUMBER (OVER) öğesini kullanabilir ve ardından ROW_NUMBER numaralı satış elemanını belirlemek için müşteri temsilcilerinden ROW_NUMBER numaralı telefonu kullanabilirsiniz. SQL Server yılında