I am using SQL Server 2005
I populate a table with this query:
USE [MyDB]
INSERT INTO dbo.Summaries
SELECT DISTINCT TOP (100) PERCENT
s.Kiosk_ID, k.kioskName, u.Owner_id, o.DisplayName, u.value,
COUNT(u.value) AS ValueCount, k.KioskGroup_ID,
CONVERT(varchar, u.DateTime, 112) as date,
'Marketing' AS DBName
FROM
dbo.k_UsageLog AS u
INNER JOIN
dbo.K_Owner AS o ON o.Owner_id = u.Owner_id
INNER JOIN
dbo.k_Session AS s ON u.Session_id = s.Session_id
INNER JOIN
dbo.Kiosk AS k ON k.Kiosk_ID = s.Kiosk_ID
WHERE
(o.Owner_id > 12)
GROUP BY
s.Kiosk_ID, u.Owner_id, u.value, k.KioskGroup_ID, o.DisplayName,
CONVERT(varchar, u.DateTime, 112), k.kioskName
ORDER BY
s.Kiosk_ID
I need to run this nightly and only add new rows.
I thought of simply using a timedate stamp and only adding yesterday's data, but some units that report to the DB may be offline for days at a time and will send several days worth of data when they finally connect.
I know I need something like MERGE (which thanks to marc_s I now know is not included in MS SQL Server 2005), but I cannot figure out how to make it work. Help would be greatly appreciated.
MERGEstatement yet - that's a new feature in SQL Server 2008