3

場所のリスト内で従業員の一意のランダムな投稿/募集場所を選択しようとしています.すべての従業員はすでにその場所に投稿されています.ランダムな場所は自宅の場所と同じではありません」従業員テーブルは次のとおりです。

EmpNo   Empname           CurrentPosting    Home        Designation RandomPosting
1       Satish Kumar      Samastipur        Gazi        Manager     
2       Anil Kumar Singh  Vaishali          Patna       Manager     
3       Rajdev Prasad     Nawada            Gaya        PO      
4       Rajesh Kumar      Sheikhpura        Muzaffarpur PO      
5       Jitendra Kumar    Banka             Bhagalpur   Clerk       

等々...

そしてPlacesテーブルは

PlaceID  PlaceName      Manager     PO    Clerk
1        Araria            2        0     1
2        Arwal             1        1     1
3        Aurangabad        1        0     2
4        Banka             2        1     1
5        Begusarai         1        1     1
6        Bhagalpur         1        1     2
7        Bhojpur           0        2     0

等々...

以下のように rand() と newid() を試してみましたが、

select Employee.*, Place.PlaceName As RandomPosting  from Employee 
inner join Place on Place.PlaceID=Employee.EmpNo order by newid()

しかし、必要なものを選択できません...つまり、各従業員に、CurrentPosting および Home(従業員内) と等しくない PlaceName(Place から) をランダムに割り当てることです。

前もって感謝します。

4

1 に答える 1

3
WITH cteCrossJoin AS (
    SELECT e.*, p.PlaceName,
           ROW_NUMBER() OVER(PARTITION BY e.EmpNo ORDER BY NEWID()) AS RowNum
        FROM Employee e
            CROSS JOIN  Place p
        WHERE e.Home <> p.PlaceName
)
SELECT *
    FROM cteCrossJoin
    WHERE RowNum = 1;
于 2012-09-20T20:40:45.217 に答える