테이블 tblOperationLog를 작성하고 사용자가 기본 테이블에서 행을 삭제, 업데이트 또는 삽입 할 때 입력 할 트리거를 작성했습니다. 그것은 삭제하고 하나를 삽입입니다 : 외부 조인을 사용하여 3 개의 쿼리를 결합했습니다.
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를 사용합니다.
를 어떻게 그들과 합류하는, 내가 그것을 사용하는 나를 보여 pleaese 수 있습니다하지만 난 결과를 얻을 couldnt한다 – anna
쿼리에서 열 이름이 같지 않아서 유니온이 작동하지 않습니다. – anna