我正在尝试在地点列表中选择员工的唯一随机发布/招聘地点,所有员工都已在这些地点发布,我正在尝试为他们生成一个新的随机发布地点,其中“位置”条件为“员工新随机位置将不等于他们的家乡,并且随机选择的员工及其指定必须小于或等于 Places 表中的 Place wise 指定编号“
员工表是:
EmpNo EmpName CurrentPosting Home Designation RandomPosting
1 Mac Alabama Missouri Manager
2 Peter California Montana Manager
3 Prasad Delaware Nebraska PO
4 Kumar Indiana Nevada PO
5 Roy Iowa New Jersey Clerk
等等...
并且 Places 表(具有员工数量的 PlaceNames - 指定明智)是: -
PlaceID PlaceName Manager PO Clerk
1 Alabama 2 0 1
2 Alaska 1 1 1
3 Arizona 1 0 2
4 Arkansas 2 1 1
5 California 1 1 1
6 Colorado 1 1 2
7 Connecticut 0 2 0
等等...
尝试使用 newid() 如下所示,并且能够选择具有 RandomPosting 地名的员工,
WITH cteCrossJoin AS (
SELECT e.*, p.PlaceName AS RandomPosting,
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;
另外,我需要根据指定编号(在 Places 表中)限制随机选择...即为每个员工随机分配一个 PlaceName(来自 Places),这不等于 CurrentPosting 和 Home(在 Employee 中)和 Place wise 指定将不超过给定的数字。
提前致谢。