0 sql t-sql sql-server if-statement while-loop
我有一个名为Training的表,其中包含Employee ID,Hours,is3ManDay等行.在此表中,可能有多个记录对应于同一个Employee.
我必须计算与每个员工ID相关的小时数,我这样做了
SELECT EMP_ID, SUM(HRS) AS TOTALHRS, is3ManDay
from Training
GROUP BY EMP_ID, is3ManDay
Run Code Online (Sandbox Code Playgroud)
工作完全正常,但现在我想根据每个员工的总小时数将is3ManDay更新为是或否
@Emp_ID int,
@is3ManDay varchar(10)
IF (SELECT SUM(Hrs) FROM Training WHERE Emp_ID = @Emp_ID) >= 36
BEGIN
UPDATE Training
SET is3ManDay = 'Y'
Where Emp_ID = @Emp_ID
END
ELSE
UPDATE Training
SET is3ManDay = 'N'
Where Emp_ID = @Emp_ID
Run Code Online (Sandbox Code Playgroud)
这个也很好但是我必须手动更改@Emp_ID并执行不实用的存储过程.我想在这段代码中包含一个循环,但如果我删除@Emp_ID,它将更新所有具有相同值的行,因为没有选择ID.
WHILE (SELECT SUM(HRS) FROM Training) >= 36
BEGIN
UPDATE Training
SET is3ManDay = 'Y'
END
Run Code Online (Sandbox Code Playgroud)
我尝试了WHILE声明,但没有为我工作.
你不需要是程序性的.使用SQL:
UPDATE Training
SET is3ManDay = 'Y'
Where Emp_ID in
(SELECT Emp_ID FROM Training HAVING SUM(Hrs) >= 36)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2695 次 |
最近记录: |