【发布时间】:2010-07-30 14:03:38
【问题描述】:
我创建了一个表 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。
【问题讨论】:
标签: sql-server join