【问题标题】:sql trigger to do sum,averagesql触发器做总和,平均
【发布时间】:2011-11-30 14:00:03
【问题描述】:

我是第一次写触发器,谁能帮我解决这个问题

实际上我想要完成的是,我创建了一个包含 5 列的数据库表。使用插入查询,我将值插入 2 列,我希望通过此插入,其他 3 列的值应自动填充。为此,我想创建一个触发器来计算时间和销售额的总和和平均值(分别在数据库表中定义的两列),即当我们输入时间和销售额时,也应该计算总和和平均值(分别用于时间和销售额)然后当我们选择表格时,它应该显示所有四个条目(时间、销售额、总和、平均值)。

现在我将触发器用作:

ALTER TRIGGER [dbo].[trgInsert] ON [dbo].[tblEvalutionData]
    for insert
AS 
BEGIN
  insert into tblEvalutionData (AverageSales,TotalSales,TotalTime) 
  select avg(Sales) as AverageSales, sum(Sales) as TotalSales,sum(ElapsedTime)as  TotalTime from inserted
END

当我写这个查询时

插入 tblName(time,sales) values(5,34) 并执行它,结果如下:

Time Sales SumSales  AverageSales
5     34   null  null
null  null 34    34
6     14   null  null
null null  48    24

我该如何解决这个问题?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: sql-server-2008 triggers


    【解决方案1】:

    不要为此使用触发器!

    SQL Server 支持calculated columns。对于聚合,您可以使用indexed views

    但是,我认为您对自己要做什么感到非常困惑。

    如果您想聚合单个插入的行,我可以向您保证 SUMAVERAGE 将等于 Sales 字段。

    请提供更多信息,说明您正在尝试完成什么(只需编辑问题以添加它),我们可能会提供答案。

    【讨论】:

    • 我编辑了问题为您提供场景,请帮助解决问题
    • @Surbhi 你想得到所有插入行的平均值吗?是否有其他标准可以将它们分组?
    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多