繁体   English   中英

SQL如何从另一个表求和并插入另一个表

[英]SQL How to sum from another table and insert in another table

现在我在Delphi应用程序中求和,然后将其插入SQL数据库中
但我希望数据库在插入新的ExpenseAmount时自动求和并插入
我有2张桌子

ProjectsTable (ProjectID, ProjectName, Cost, ExpenseTotal, CostRemaining)
ExpenseTable (ID, ProjectID, ExpenseAmount, ExpenseDate)

我想为ProjectsTable每个项目自动求和ExpenseAmount并将其插入到ProjectsTable ExpenseTotal
我想在Delphi SQL做到这一点

您可以创建一个对每个项目的费用金额进行分组的子查询,然后更新 Projects 表。

UPDATE ProjectsTable
SET ProjectsTable.ExpenseTotal = S1.ExpenseAmount
FROM ProjectsTable
INNER JOIN (SELECT ProjectID, SUM(ExpenseAmount) as ExpenseAmount
FROM ExpenseTable
GROUP BY ProjectID) as S1
ON ProjectsTable.ProjectID = S1.ProjectID

将此触发器添加到您的费用表

CREATE TRIGGER ExpenseSum AFTER INSERT ON ExpenseTable FOR EACH ROW
BEGIN
    UPDATE ProjectsTable P
    SET ExpenseTotal = 
    (SELECT SUM(ExpenseAmount) from ExpenseTable
    where ExpenseTable.ProjectID= P.ProjectID)
    where P.ProjectID = New.ProjectID;
END

不要忘记添加触发器After UpdateAfter Delete来更新 ExpenseTotal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM