[SQL]统计式更新表

代码
declare @UnitPrice money,
        
@AdvID int,
        
@returnValue int
Set @UnitPrice = 11
Set @AdvID = 83


Begin Transaction
Update [a] Set 
 a.Search_Money 
= a.Search_Money + b.CountNum * @UnitPrice 
 
from ( select 
Count(SIID) as CountMoney,UserName,Convert(varchar,CountDate,23as CountDate,AdvID,AdvDetailID 
 
Where  UnitPrice = 0  And AdvID = @AdvID  And IsEffective = 1   Group By UserName,Convert(varchar,CountDate,23),AdvID,AdvDetailID
as b 
 
left join [AdvCount] as a 
 
ON(a.WebUserName = b.UserName and 
 a.AdvListID 
= b.AdvID And a.AdvDetailed = b.AdvDetailID And DateDiff(dd,a.AddTime,b.CountDate) = 0
IF @@Error <> 0 Or @@rowCount <1 GOTO Error 
Update [TDS_SearchDetail] Set   UnitPrice = @UnitPrice  Where  UnitPrice = 0  And AdvID = @AdvID  And IsEffective = 1  ;
IF @@Error <> 0 Or @@rowCount <1 GOTO Error 
Commit Transaction
Set @returnValue = 1
return
Error:
Set @returnValue = 0
RollBack Transaction

 

posted @ 2010-01-06 10:48  竹子小毅  阅读(212)  评论(0编辑  收藏  举报