请高手指点解决以下难题,谢谢!
消息 157,级别 15,状态 1,过程 PURTHONLOAD,第 6 行
聚合不应出现在 UPDATE 语句的集合列表中。create TRIGGER [dbo].[PURTHONLOAD] ON [dbo].[PURTH]
AFTER INSERT,UPDATE,DELETE AS
BEGIN
SET NOCOUNT ON
UPDATE INVMB
SET UDF52=SUM(B.TH007)
FROM INSERTED T,PURTH B,INVMB A
WHERE T.TH004=B.TH004
AND B.TH004=A.MB001
AND B.TH030='N'
SET NOCOUNT OFF
END

解决方案 »

  1.   

    create TRIGGER [dbo].[PURTHONLOAD] ON [dbo].[PURTH]
    AFTER INSERT,UPDATE,DELETE AS
    BEGIN
    SET NOCOUNT ON
    UPDATE INVMB SET UDF52=
    (
    select sum(b.TH007) from INSERTED T,PURTH B
    WHERE T.TH004=B.TH004
    AND B.TH004=A.MB001
    AND B.TH030='N'
    )
    from
    INVMB A
    SET NOCOUNT OFF
    END这样试试
      

  2.   

    create TRIGGER [dbo].[PURTHONLOAD] ON [dbo].[PURTH]
    AFTER INSERT,UPDATE,DELETE AS
    BEGIN
    SET NOCOUNT ON
    UPDATE A
    SET UDF52=(
    select SUM(B.TH007)
    FROM INSERTED T,PURTH B
    WHERE T.TH004=B.TH004
    AND B.TH004=A.MB001
    AND B.TH030='N'
    )
    from INVMB A
    SET NOCOUNT OFF
    END
      

  3.   

    你改成这样写看行不行?Update  INVMB
    SET UDF52=B.TH007
    From   INVMB  A  
    inner  join  
    (Select   
       TH004,
       sum(TH007) as TH007
      From PURTH
      Group  by   TH004)B  On   B.TH004=A.MB001
    inner join  INSERTED  T  On T.TH004=B.TH004 
      

  4.   


    create TRIGGER [dbo].[PURTHONLOAD] ON [dbo].[PURTH]
    AFTER INSERT,UPDATE,DELETE AS
    BEGIN
    SET NOCOUNT ONUPDATE A
    SET UDF52=B2.sTH007
    FROM INVMB A
    cross apply
    (select SUM(B.TH007) sTH007 
    from PURTH B 
    inner join INSERTED T on T.TH004=B.TH004
    where B.TH004=A.MB001 and B.TH030='N') B2SET NOCOUNT OFF
    END
      

  5.   

    create TRIGGER [dbo].[PURTHONLOAD] ON [dbo].[PURTH]
    AFTER INSERT,UPDATE,DELETE AS
    BEGIN
    SET NOCOUNT ON
    UPDATE A
    SET UDF52=(
    select SUM(B.TH007)
    FROM INSERTED T,PURTH B
    WHERE T.TH004=B.TH004
    AND B.TH004=A.MB001
    AND B.TH030='N'
    )
    from INVMB A
    SET NOCOUNT OFF
    END
      

  6.   

    SET UDF52=SUM(B.TH007)1、这里可以用子查询 (select sum() from .. where ..)2、可以通过子查询做表连接update t
    set t.[] = e.[]
    from tb t join (select tid,sum() from tc where ..) e on t.id = e.tid类似;