我需要从表“Employees”的“EmployeeID”列中收集值,并将它们插入到“Incident”表的“EmployeeID”列中。最后,“EmployeeID”列的行中的值应随机排列。
更确切地说; 我用他们的 ID 创建了 10 名员工,从 1 数到 10。这些员工,实际上是 ID,应该接收随机事件来处理。所以……有 10 个 ID 可以传播到所有事件上——可能是 1000 个。
我该怎么做呢?
这只是在本地机器上进行个人锻炼。我用谷歌搜索,但没有找到我的问题的明确答案。
应该很容易为您解决冠军。:) 有人可以帮助我吗?
笔记:
1) 我已经在“事件”表中创建了一个名为“EmployeeID”的列,因此我需要一个更新语句,不是吗?
2) 架构:
[dbo].[EmployeeType]
[dbo].[Company]
[dbo].[Division]
[dbo].[Team]
[dbo].[sysdiagrams]
[dbo].[Incident]
[dbo].[Employees]
3) 1. 预解决方案:
CREATE TABLE IncidentToEmployee
(
IncidentToEmployeeID BIGINT IDENTITY(1,1) NOT NULL,
EmployeeID BIGINT NULL,
Incident FLOAT NULL
PRIMARY KEY CLUSTERED (IncidentToEmployeeID)
)
INSERT INTO IncidentToEmployee
SELECT
EmployeeID,
Incident
FROM dbo.Employees,
dbo.Incident
ORDER BY NEWID()
SELECT * FROM IncidentToEmployee
GO
3) 2. INNER JOIN ON 输出
如果您想知道“别名”列;没有人真正知道 ID 背后有哪些人——这就是我使用别名列的原因。
SELECT Employees.Alias,
IncidentToEmployee.Incident
FROM Employees
INNER JOIN
IncidentToEmployee ON
Employees.EmployeeID = IncidentToEmployee.EmployeeID
ORDER BY Alias
4) 最终解决方案
正如我所提到的,我首先在“事件”表中添加了一个名为“EmployeeID”的列。这就是为什么我一开始不能使用 INSERT INTO 语句而不得不使用 UPDATE 语句的原因。我现在找到了最合适的解决方案 - 没有像我作为预解决方案那样创建新表。看看下面的代码:
ALTER Table Incident
ADD EmployeeID BIGINT NULL
UPDATE Incident
SET Incident.EmployeeID = EmployeeID
FROM Incident INNER JOIN Employees
ON Incident = EmployeeID
SELECT
EmployeeID,
Incident
FROM dbo.Employees,
dbo.Incident
ORDER BY NEWID()
谢谢大家的帮助 - 我认为需要更长的时间才能找到解决方案;但我终于成功了。谢谢!