SQL триггер, чтобы сделать сумму, в среднем - PullRequest
0 голосов
/ 30 ноября 2011

Я впервые пишу триггер, может кто-нибудь помочь мне решить эту проблему

На самом деле я хочу создать таблицу базы данных с 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 Ответ

2 голосов
/ 30 ноября 2011

Не используйте триггер для этого!

SQL Server поддерживает вычисляемые столбцы . Для агрегатов вы можете использовать индексированных представлений .

Однако я думаю, что вы ОЧЕНЬ не понимаете, что вы пытаетесь сделать.

Если вы хотите объединить одну вставленную строку, я могу пообещать вам, что SUM и AVERAGE будут равны полю Sales.

Пожалуйста, предоставьте больше информации о том, что именно вы пытаетесь выполнить (просто отредактируйте вопрос, чтобы добавить его), и мы, вероятно, сможем дать ответ.

...