我使用SQL Server 2005的追加新的记录,使用T-SQL
我填充这个查询表中的数据表:
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
我需要在夜间运行这一点,只添加新行。
我想到了简单地使用时间戳,只添加了昨天的数据,但是一些报告给数据库的单位可能一次脱机数天,并且当他们最终连接时会发送数天的数据。
我知道我需要类似MERGE
(这感谢marc_s我现在知道不包括在MS SQL Server 2005中),但我无法弄清楚如何使它工作。帮助将不胜感激。
SQL Server 2005尚未具有MERGE语句 - 这是SQL Server ** 2008中的新功能** –
您是否拥有唯一的主键?你如何识别什么是新行? – ScubaManDan
谢谢marc_s。我很担心这一点。 – barna10