Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在以下场景之后,将计数重置为0_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

Sql server 在以下场景之后,将计数重置为0

Sql server 在以下场景之后,将计数重置为0,sql-server,tsql,stored-procedures,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,GETD

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

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。它将随机、平等地分配给所有用户。假设TotalHighPrtJPB的所有计数都变为1,那么我想将所有这些都重置为0。如果假设今天有3个作业分配给useids 169187188。明天分配作业时,由于UserID147和176的highprtjobs的计数为0,这两个将首先分配一个作业。分配给这两个之后,totalhighprtjobs的计数将为01表示所有,然后在分配给这两个之后,我想将计数重置为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

你已经开始实施这一计划了吗?您遇到了哪些问题?如果您想确保随机性,还可以在update语句的子查询中添加ORDER BY NEWID()。