2014-01-09 37 views
0

我有一張記錄如下的表:它只是用於瞭解場景的示例表。在下列情況下將計數值重置爲0

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.it將分配給所有用戶隨機等。假設如果totalhighprtjpbs的所有計數都變爲1,那麼我想將所有這些計數重置爲0.如果今天有3個工作分配給useid 169,187,188,那麼在分配工作時,由於userid 147和176的highprtjobs計數爲0,所以首先這兩個將被分配一個job.After分配到這兩個計數totalhighprtjobs將爲1所有,然後我想重置計數爲0後爲所有分配給這兩個。

你能指導我嗎?

+3

您是否已經開始實施?你有什麼問題? –

回答

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 
+0

如果要確保隨機性,還可以將ORDER BY NEWID()添加到update語句中的子查詢中。 – Jayvee

相關問題