当前位置: 代码迷 >> Sql Server >> 存储过程数据有关问题
  详细解决方案

存储过程数据有关问题

热度:61   发布时间:2016-04-24 10:05:30.0
存储过程数据问题
--放入总挂号人数
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 = ...

------解决方案--------------------
引用:
说错了,,出来的值全是0,同事讲因为update的事务还没提交,我第一步是设ghnum,第二步就把ghnum拿来用了


看1楼红色字总价加上*1.0
------解决方案--------------------
引用:
说错了,,出来的值全是0,同事讲因为update的事务还没提交,我第一步是设ghnum,第二步就把ghnum拿来用了


是要分两步的.
------解决方案--------------------
楼主,你同事说的是没错的,update也是一条一条记录进行操作的,你上面的ghnum 和 yyl 都是在同一条记录中的不同字段,也就是两个更改时一起更改的
  相关解决方案