Tsql 在sql中使用case语句更新多列 选择@calc 更新用户事务集DP=(大小写) 当(TotalBV>=201且TotalBV=601,TotalBV=1601,TotalBV=5001且TotalBV=15001且TotalBV=30001且TotalBV=50001)时,则(0.30*TotalPBV) else(空结束) 其中User\u Id=@UserId和赞助者\u Id=@SponsorId

Tsql 在sql中使用case语句更新多列 选择@calc 更新用户事务集DP=(大小写) 当(TotalBV>=201且TotalBV=601,TotalBV=1601,TotalBV=5001且TotalBV=15001且TotalBV=30001且TotalBV=50001)时,则(0.30*TotalPBV) else(空结束) 其中User\u Id=@UserId和赞助者\u Id=@SponsorId,tsql,sql-server-2005,Tsql,Sql Server 2005,上面是我正在使用的更新查询。现在它只更新一行特定的用户Id和赞助商Id。我如何一次检查多个用户Id和赞助商Id?而不是等于运算符在子句中使用 select @calc update UserTransaction set DP=(case when (TotalBV >= 201 and TotalBV < 600) then (0.1*TotalBV) when (TotalBV >= 601 and TotalBV <1600 ) then (0.15*Total

上面是我正在使用的更新查询。现在它只更新一行特定的用户Id和赞助商Id。我如何一次检查多个用户Id和赞助商Id?

而不是等于运算符在子句中使用

select @calc
update UserTransaction set DP=(case 
when (TotalBV >= 201 and TotalBV < 600) then (0.1*TotalBV)
when (TotalBV >= 601 and  TotalBV <1600 ) then (0.15*TotalBV)
when (TotalBV >= 1601 and  TotalBV< 5000) then (0.18*TotalBV)
when (TotalBV >= 5001 and TotalBV< 15000) then (0.21*TotalBV)
when (TotalBV >= 15001 and TotalBV< 30000) then (0.24*TotalBV)
when (TotalBV >= 30001 and TotalBV< 50000) then (0.27*TotalBV)
when (TotalBV >= 50001) then (0.30*TotalPBV)
else null end)
where User_Id=@UserId and Sponsor_Id=@SponsorId

谢谢,如果我想同时为多个用户做同样的事情,我该如何使用它?
UPDATE UserTransaction
set    DP=(CASE .. END)
WHERE  user_id IN 
       (SELECT user_id 
          FROM   TABLE) 
AND    sponsorid IN 
       (SELECT sponsorid 
          FROM   TABLE)