请教sql语句错误(100分)

  • 主题发起人 主题发起人 kukemusic
  • 开始时间 开始时间
K

kukemusic

Unregistered / Unconfirmed
GUEST, unregistred user!
Update ydgh set dr=case when substring(max(dr),7,4)=cast(DATEPART(yyyy, getdate()) as varchar) then &nbsp;max(dr)+1 else '441581'+cast(DATEPART(yyyy, getdate()) as varchar) +'000001' end<br>这句语句出现“聚合不应出现在 UPDATE 语句的集合列表中。”错误不知道那里错了???麻烦大家帮忙看看
 
max 不能用在 update 语句的子句中的<br>你的语句可以这样写:<br>update ydgh set dr=case when dr = (select max(dr) from ydgh where substrin(dr,7,4) = case(DATEPART(yyyy,getdate()) as varchar)
 
Update ydgh set dr=b.dr<br>from <br>(select dr=case when substring(max(dr),7,4)=cast(DATEPART(yyyy, getdate()) as varchar) then &nbsp;max(dr)+1 else '441581'+cast(DATEPART(yyyy, getdate()) as varchar) +'000001' end from ydgh<br>)b
 
jenhon,在远行这条语句的时候提示最大数值溢出要怎么解决呢?
 
你的表的情况我不是很清楚,应该在max(dr)这里出错,记录数太多导致?你先求出来再case可能能解决。<br>如果你没有把握一口气做好,还是用临时表测试一下:<br>select max(dr) as maxdr into #temp_table from ydgh<br><br>update ydgh set dr=b.dr<br>from <br>(select dr=case when substring(maxdr,7,4)=cast(DATEPART(yyyy, getdate()) as varchar) then &nbsp;maxdr+1 else '441581'+cast(DATEPART(yyyy, getdate()) as varchar) +'000001' end from #temp_table)b &nbsp;<br><br>drop table #temp_table
 
如果在第一步 就提示 最大值溢出,那你就自己查一下数据那里不对了;<br>如果是第二步提示,你再把case语句拆开来看结果哪里不对。
 
后退
顶部