【发布时间】:2013-12-22 16:52:07
【问题描述】:
我有一个 SQL 触发器,每当签入新客户时,他们都会自动分配给技术人员。像这样的案例陈述,我觉得它很好用
SET @TechOrder =
(
CASE
WHEN @LastTech = 'Tech1' THEN 'Tech2'
WHEN @LastTech = 'Tech2' THEN 'Tech3'
WHEN @LastTech = 'Tech3' THEN 'Tech4'
WHEN @LastTech = 'Tech4' THEN 'Tech1'
and so on...
ELSE 'Tech1'
END
)
然后它用这个更新插入的订单
UPDATE WorkOrder
SET Technician = @TechOrder
WHERE ID = @OrderID
这个职位有很多工作变动和转身,我不想每次有新技术时都手动更改 SQL 触发器。我想知道是否有更好的方法来分配基于员工表 WHERE Job_Roll 等于该职位的技术。
我在想一个循环或光标可以用来选择下一个技术,但我不确定我会怎么做。我正在使用 SQL 2008 R2,因此无法使用 LAG/LEAD。
任何帮助将不胜感激。
【问题讨论】:
-
如何创建一个包含技术人员和最后分配工作订单日期的表格,然后从最大日期中选择它,然后在选择后使用新日期更新它。
-
这是个好主意,我会研究一下
-
如果它解决了您的问题,请告诉我,然后我将作为答案发布,以便其他人找到您的帖子。
-
可以,我正在尝试,谢谢
-
我让它工作了,唯一的问题是添加了新员工并且他们的分配日期为空,因此 max(date) 看不到它。我所做的是在表上设置一个默认约束,以便在添加员工时设置一个 getdate()。再次感谢您的帮助。
标签: sql sql-server-2008-r2 while-loop case