2011-11-30 158 views
0

我写一个触发第一次谁能帮我解决这个问题SQL触发器做总和,平均

什么其实我想做到的是,我创建了一个数据库表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 

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

回答

2

不要为此使用触发器!

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

但是,我认为你非常困惑你想要做什么。

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

请提供更多关于您正在尝试完成的内容的信息(只需编辑问题以添加它),我们可以提供一个答案。

+0

我编辑了这个问题,为您提供场景,请帮忙解决问题 – Surbhi

+0

@Surbhi是否想将所有插入行的平均值设置为一组?是否有其他一些标准可以将它们分组? – JNK