--放入总挂号人数
update c set
c.ghnum=(select COUNT(*) from t_booking where (datediff(day,out_date,@sdate)<=0 and DATEDIFF(DAY,out_date,@edate)>=0) and isvalid=1 and comname=c.comname),
c.yyl=(
case when c.ghnum=0 then 0
else convert(decimal(18,2),c.yysum/(c.ghnum+0.0)*100) end)
from #table_djl c
然后执行的时候c.yyl值是空的
------解决方案--------------------
c.yyl = ( CASE WHEN c.ghnum = 0 THEN 0
ELSE CONVERT(DECIMAL(18, 2), c.yysum*1.0 / ( c.ghnum + 0.0 )
* 100)
END )
检查列值是为有null
------解决方案--------------------
那就分成两步执行
update c set
c.ghnum = ...
update c set
c.yyl = ...
------解决方案--------------------
看1楼红色字总价加上*1.0
------解决方案--------------------
是要分两步的.
------解决方案--------------------
楼主,你同事说的是没错的,update也是一条一条记录进行操作的,你上面的ghnum 和 yyl 都是在同一条记录中的不同字段,也就是两个更改时一起更改的