在以下方案之后将计数重置为0

时间:2014-01-09 08:16:50

标签: sql-server tsql stored-procedures

我有一个记录如下的表:它只是一个用于理解场景的示例表。

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。

你能指导我吗?

1 个答案:

答案 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