Обновить существующую таблицу дополнительными данными из разных таблиц. - PullRequest
0 голосов
/ 07 мая 2020

Есть таблица WebSummary, которая содержит сводные данные из разных таблиц, которые собирают данные непрерывно. Мне нужно создать процедуру, которая добавляет новые данные из этих таблиц в WebSummary.

У меня есть черновик, я не уверен, что он правильный, но как его можно изменить для вставки только новых данных, потому что старые данные уже есть.

CREATE PROCEDURE WebLogTransfer 
AS
BEGIN 
SET NOCOUNT ON;

BEGIN TRAN

SELECT * INTO #transfer FROM (

SELECT cast(LogDate AS DATE) LogDate, LogUser, LogPCName, [Log222ID], Count(*) LogCount
FROM [IS3].[ApplicationAccessLog].[dbo].[WebAppLog]
GROUP BY cast(LogDate AS DATE), LogUser, [Log222ID], LogPCName

UNION ALL

SELECT cast(LogDate AS DATE) LogDate, LogUser COLLATE SQL_Latin1_General_CP1_CI_AS, LogPCName COLLATE SQL_Latin1_General_CP1_CI_AS, [Log222ID] , Count(*) LogCount
FROM [IS2].[ApplicationAccessLog].[dbo].[WebAppLog]
GROUP BY cast(LogDate AS DATE), LogUser, [Log222ID], LogPCName

UNION ALL

SELECT cast(LogDate AS DATE) LogDate, LogUser, LogPCName, [Log222ID], Count(*) LogCount
FROM [IS1].[ApplicationAccessLog].[dbo].[WebAppLog]
GROUP BY cast(LogDate AS DATE), LogUser, [Log222ID], LogPCName

UNION ALL

SELECT cast(LogDate AS DATE) LogDate, LogUser, LogPCName, [Log222ID], Count(*) LogCount 
FROM [IS].[ApplicationAccessLog].[dbo].[WebAppLog]
GROUP BY cast(LogDate AS DATE), LogUser, [Log222ID], LogPCName

ORDER BY 1
) a


INSERT INTO [IS3].[ApplicationAccessLog].[dbo].[WebSummary] (LogDate, LogUser, LogPCName, Log222ID, LogCount) 
    SELECT LogDate, LogUser, LogPCName, Log222ID, LogCount
    FROM #transfer 

IF @@TRANCOUNT > 0
  BEGIN
    ROLLBACK TRAN
  END 

COMMIT TRAN

DROP TABLE #transfer


END
GO

Должен ли быть JOIN, или IF EXISTS, или какая-то точка, которая будет означать - данные были перенесены в эту точку и в следующий раз они будут перенесены из этой точки?

Ваши знания действительно помогут мне как написать эффективную процедуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...