Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
860 views
in Technique[技术] by (71.8m points)

sql - An aggregate may not appear in the set list of an UPDATE statement

UPDATE [silverdb01].[dbo].[info] 
SET [FM] = SUM(a.[MONDAY] - b.[QUOTA]) 
FROM  [silverdb01].[dbo].[info] a,  [silverdb01].[dbo].[quota] b 
WHERE a.[WORK_TYPE]='IN' AND a.[NAME]='KUTHAY'

When I run this I get the following error:

An aggregate may not appear in the set list of an UPDATE statement.

Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I am guessing that (as other's have pointed out) you don't really want a cartesian on this update so I have added an "id" to the query so you will have to do some modification but this might get you on the right path

;with temp as (
    select  a.id, SUM(a.pazartesi - b.kota) as newTotal
    from    [asgdb01].[dbo].[info] a join [asgdb01].[dbo].[kota] b 
          on a.id = b.id
    where   a.work_type='in' and a.name='alp' )
update  a
set     fm = t.newTotal
from    [asgdb01].[dbo].[info] a join temp t on a.id = t.id

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...