一条SQL SERVER无法执行,请各位来看看问题在哪.(200)

  • 主题发起人 主题发起人 driayu
  • 开始时间 开始时间
D

driayu

Unregistered / Unconfirmed
GUEST, unregistred user!
Update ##KqData Set OtherOvertimeMins=(Select Sum(DateDiff(Minute,(Case When StartTime>T.CurDateOnduty Then StartTime Else T.CurDateOnduty End), EndTime)) from OvertimeDetail Where StartTime<T.NextDayOnduty And EndTime>T.CurDateOnduty And Employeeid=T.Employeeid) from ##KqData T Where Cast(CurDate As DateTime)=Cast('2010-05-15' As DateTime)执行时提示下面错误信息服务器: 消息 8124,级别 16,状态 1,行 1在包含外部引用的被聚合表达式中指定了多个列。如果被聚合的表达式包含外部引用,那么该外部引用就必须是该表达式中所引用的唯一的一列。
 
update 语句不能这么写吧?
 
请问, 那应该如何写呢?
 
两个表关联一下再UPDATE阿
 
Update ##KqData set OtherOvertimeMins=sum(DateDiff(Minute,(Case When StartTime>T.CurDateOnduty Then StartTime Else T.CurDateOnduty End), EndTime)from OvertimeDetail a,##KqData Twhere a.StartTime<T.NextDayOndury and a.EndTime>T>CurDateOnduty and a.Employeeid=T.Employeeidand CurDate='2010-05-15'这样可以吗
 
呵呵,一定要top 1
 
还有哪位高手能帮忙想想解决方法,小弟急等啊.
 
你不会吧,连加top 1 都不懂?修改 必须确保返回的结果是唯一的才能 进行修改
 
Update ##KqData Set OtherOvertimeMins=(Select Sum(DateDiff(Minute,(Case When StartTime>T.CurDateOnduty Then StartTime Else T.CurDateOnduty End), EndTime)) from OvertimeDetail Where StartTime<##KqData.NextDayOnduty And EndTime>##KqData.CurDateOnduty And Employeeid=T.Employeeid) Where Cast(CurDate As DateTime)=Cast('2010-05-15' As DateTime)
 
后退
顶部