Sql server 关键字组附近的语法不正确

Sql server 关键字组附近的语法不正确,sql-server,group-by,sql-update,Sql Server,Group By,Sql Update,我有以下update语句,但出现错误: 关键字“GROUP”附近的语法不正确 执行时 CREATE TRIGGER [dbo].[target_cumulative] ON [dbo].[Appointments] AFTER INSERT, UPDATE AS BEGIN IF TRIGGER_NESTLEVEL() > 1 RETURN UPDATE T1 SET T1.[Target_Cumulative] = SUM(ISNULL(CAS

我有以下update语句,但出现错误:

关键字“GROUP”附近的语法不正确

执行时

CREATE TRIGGER [dbo].[target_cumulative]
ON [dbo].[Appointments]
AFTER INSERT, UPDATE
AS 
BEGIN
    IF TRIGGER_NESTLEVEL() > 1
        RETURN

    UPDATE T1
    SET T1.[Target_Cumulative] = SUM(ISNULL(CAST([TARGET] AS FLOAT), 0))
    FROM dbo.Appointments AS T1
    INNER JOIN inserted AS I ON I.UniqueId = T1.UniqueId
    GROUP BY CONVERT(DATE, T1.StartDate), T1.ResourceId;
END;
下面是我的应用程序的外观 我错过了什么?

给你:

create table appt (target int, target_cumulative int, unique_id int, resource_id int, start_date datetime);
create table inserted(unique_id int, value int);

insert into appt values(10, 0, 1, 1, '2019-07-26 08:00:00');
insert into appt values(20, 0, 2, 2, '2019-07-26 07:00:00');
insert into appt values(30, 0, 3, 1, '2019-07-26 10:00:00');
insert into appt values(10, 0, 4, 1, '2019-07-26 11:00:00');
insert into appt values(20, 0, 5, 2, '2019-07-26 09:00:00');

insert into inserted values(1, 10);
insert into inserted values(2, 10);
insert into inserted values(3, 10);
insert into inserted values(4, 10);
insert into inserted values(5, 10);

update appt set target_cumulative=xtarget
from (select t1.resource_id, sum(t1.target)as xtarget from appt t1
inner join inserted as i on t1.unique_id=i.unique_id
group by convert(date, t1.start_date), t1.resource_id) t2
where appt.resource_id=t2.resource_id;
这是您可以根据需要检查和修改的小提琴:

给您:

create table appt (target int, target_cumulative int, unique_id int, resource_id int, start_date datetime);
create table inserted(unique_id int, value int);

insert into appt values(10, 0, 1, 1, '2019-07-26 08:00:00');
insert into appt values(20, 0, 2, 2, '2019-07-26 07:00:00');
insert into appt values(30, 0, 3, 1, '2019-07-26 10:00:00');
insert into appt values(10, 0, 4, 1, '2019-07-26 11:00:00');
insert into appt values(20, 0, 5, 2, '2019-07-26 09:00:00');

insert into inserted values(1, 10);
insert into inserted values(2, 10);
insert into inserted values(3, 10);
insert into inserted values(4, 10);
insert into inserted values(5, 10);

update appt set target_cumulative=xtarget
from (select t1.resource_id, sum(t1.target)as xtarget from appt t1
inner join inserted as i on t1.unique_id=i.unique_id
group by convert(date, t1.start_date), t1.resource_id) t2
where appt.resource_id=t2.resource_id;

这是您可以根据需要检查和修改的小提琴:

将上面的group by移动,分配别名,然后进行内部联接。@fiveelements我试过了,但错误与您在ResourceId和转换的StartDate上执行SUM(TARGET)和group by相同。请你解释一下你的要求好吗?有很多方法可以做到这一点,但是,最后分组显然是不好的。我的要求:我有一份一定数量的工单,我想按小时分割工单,我还想按日按工单跟踪数量,以避免超额目标或计划有时工单数量为30,但我计划为40,这意味着超额目标10。例如:假设我有一个数量为30的工作订单123。现在,我想将工单#123拆分并安排为上午8点至上午9点建造10个,共30个,上午9点至上午10点建造10个,其余10个为上午11点至下午12点。所以我想求和(目标)并得到累积值,这样我就知道多少是工作订单数量,多少是我的目标。我希望这是清楚的。我添加了一个图像,显示了应用程序的外观。移动上面的group by,分配别名,然后进行内部连接。@fiveelements我尝试过,但错误与您在ResourceId和转换的StartDate上执行SUM(目标)和group by相同。请你解释一下你的要求好吗?有很多方法可以做到这一点,但是,最后分组显然是不好的。我的要求:我有一份一定数量的工单,我想按小时分割工单,我还想按日按工单跟踪数量,以避免超额目标或计划有时工单数量为30,但我计划为40,这意味着超额目标10。例如:假设我有一个数量为30的工作订单123。现在,我想将工单#123拆分并安排为上午8点至上午9点建造10个,共30个,上午9点至上午10点建造10个,其余10个为上午11点至下午12点。所以我想求和(目标)并得到累积值,这样我就知道多少是工作订单数量,多少是我的目标。我希望这是清楚的。我添加了一个图像,显示了应用程序的外观。这正是我想要的,但如何使用Trigger将您的解决方案应用到我当前的表上。我创建了与您的表结构相同的表结构:appt=>appointments,inserted=>inserted,列名也相同。我认为您可以很容易地将此映射到您的查询。如果您有任何具体问题,请告诉我。是的,这正是我想要的,但是如何使用Trigger将您的解决方案应用到我当前的表上我创建了与您相同的表结构:appt=>appointments,inserted=>inserted,列名也相同。我认为您可以很容易地将此映射到您的查询。如果您有任何具体问题,请告诉我。