sql触发器做和,平均

时间:2011-11-30 14:00:04

标签: sql-server-2008 triggers

我第一次写一个触发器,任何人都可以帮我解决这个问题

我想要实现的是,我创建了一个包含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(时间,销售)值(5,34)并执行此操作,结果为:

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

我该如何解决这个问题?或者还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

请勿使用触发器!

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

但是,我认为你对你要做的事情非常困惑。

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

请提供更多关于您要完成的内容的信息(只需编辑要添加的问题),我们就可以提供答案。