我有一个记录如下的表:它只是一个用于理解场景的示例表。
Create table resetcount
(
userid int,
totalhighprtjobs int,
[date] datetime
)
insert into resetcount Values (147,0,GETDATE())
insert into resetcount Values (169,1,GETDATE())
insert into resetcount Values (176,0,GETDATE())
insert into resetcount Values (187,1,GETDATE())
insert into resetcount Values (188,1,GETDATE())
每当我将作业分配给用户ID时,totalhighprtjobs会增加1.它会随机且平等地分配给所有用户。假设如果totalhighprtjpbs的所有计数变为1,那么我想将所有这些重置为0.如果今天在分配作业时有3个作业分配给用户169,187,188.Tomorrow因为用户ID 147和176的highprtjobs的计数是0这两个将分配一个作业。在分配给这两个之后,总数为总数的总计为1,然后我想在分配给这两个之后将计数重置为0。
你能指导我吗?
答案 0 :(得分:0)
你可以尝试这样的事情。
BEGIN TRAN
DECLARE @Total INT
SET @Total = ( SELECT COUNT(userid)
FROM resetcount WHERE totalhighprtjobs =1
) ;
IF ( @Total = 0 )
BEGIN
UPDATE resetcount
SET totalhighprtjobs = 0
END
ELSE
BEGIN
UPDATE resetcount
SET totalhighprtjobs = 1
WHERE userid IN ( SELECT TOP ( 1 )
userid
FROM resetcount
WHERE totalhighprtjobs = 0 )
END
SELECT * FROM resetcount
ROLLBACK TRAN