Я создал таблицу tblOperationLog и написал триггеры для ее заполнения, когда пользователь удаляет, обновляет или вставляет строку в мою основную таблицу.Это удаление и вставка:
CREATE TRIGGER FILL_TABLE
ON Person FOR INSERT, DELETE
AS
INSERT INTO tblOperationLog
SELECT SYSTEM_USER,
'user has inserted a row with ID = ' + Convert(nvarchar, inserted.id),
'Insert', CURRENT_TIMESTAMP, getdate()
FROM inserted
INSERT INTO tblOperationLog
SELECT SYSTEM_USER,
'user has deleted a row with ID = ' + Convert(nvarchar, deleted.id),
'Insert', CURRENT_TIMESTAMP, getdate()
FROM deleted
Теперь я хочу написать процедуру, чтобы показать среднее значение операций, которые каждый пользователь выполняет в каждый день.Я хочу, чтобы среднее значение каждой операции (удаление, вставка и обновление) в отдельных столбцах.Для достижения этой цели я написал следующие запросы:
select A.Users , avg(A.[Number Of Inserts])as 'Number Of Inserts' from
(select Users,[Time],COUNT(*) as 'Number Of Inserts' from tblOperationLog where Opertion='Insert' group by Users, [Date]) A group by Users
go
select B.Users , avg(B.[Number Of Updates])as 'Number Of Updates' from
(select Users,[Date],COUNT(*) as 'Number Of Updates' from tblOperationLog where Operation='Update' group by Users, [Date]) B group by Users
go
select C.Users , avg(C.[Number Of Deletes])as 'Number Of Deletes' from
(select Users,[Date],COUNT(*) as 'Number Of Deletes' from tblOperationLog where Operation='Delete' group by Users, [Date]) C group by Users
Go
, с помощью описанных выше процедур я показываю каждую операцию в отдельной таблице.Но я хочу, чтобы все они были в одной таблице, и я хочу, чтобы пользователи, у которых нет ни удаления, ни ... операции в среднем 0.Можете ли вы помочь мне присоединиться к ним всем?Я думаю, что я должен использовать полное внешнее соединение.Но каждый раз возникает ошибка в моем последнем запросе.Я использую SQL Server.