我目前有一个 SQL insert into 语句,它将项目从一个相同的表复制到另一个表。
源表有许多相同的记录或可能有小的变化的记录。
例子...
源表和目标表的格式为:
ItemDATE // ItemTIME // SITENAME // SERIAL_NO // RPM // Power // Voltage1 // Voltage2 // etc
来源可能包含:
ItemDATE // ItemTIME // SITENAME // SERIAL_NO // RPM // Power // Voltage1 // Voltage2 // etc
2013-01-01 00:00:00.000 // 17:00:00.1 // Oxford College // 0014617 // 1500 // 250 // 250.8 // 249.2
2013-01-01 00:00:00.000 // 17:00:00.1 // Oxford College // 0014617 // 1499// 249 // 253.5 // 240.6
2013-01-01 00:00:00.000 // 17:00:00.1 // Oxford College // 0014617 // 1502// 251 // 239.8 // 269.8
我的插入语句是:
INSERT INTO ReportingSystem.dbo.HistoryLog(ItemDATE, ItemTIME, SITENAME, SERIAL_NO, RPM, Power, Voltage1, Voltage2)
SELECT ItemDATE, ItemTIME, SITENAME, SERIAL_SN, RPM, Power, Voltage1, Voltage2
FROM ReportingSystem.dbo.RTCU
EXCEPT
SELECT ItemDATE, ItemTIME, SITENAME, SERIAL_SN, RPM, Power, Voltage1, Voltage2
FROM ReportingSystem.dbo.HistoryLog
其中 HistoryLog 是目标,RTCU 是源。
我不关心 RPM、Power、Voltage1 和 Voltage2 字段中的不同值,但应该没有 itemDATE、ItemTIME、SITENAME 和 SERIAL_NO 相同的记录。
但是对于例外声明,我仍然会被重复,因为它考虑了整个记录。
我尝试了以下但没有成功:
INSERT INTO HistoryLog
(ItemDATE, ItemTIME, SITENAME, SERIAL_NO, RPM, Power, Voltage1, Voltage2)
SELECT ItemDATE, ItemTIME, SITENAME, SERIAL_NO, RPM, Power, Voltage1, Voltage2
FROM RTCU
WHERE not exists (select * from HistoryLog
WHERE HistoryLog.ItemDATE = rtcu.ItemDATE
and HistoryLog.ItemTIME = rtcu.ItemTIME
and HistoryLog.SITENAME = rtcu.SITENAME
and HistoryLog.SERIAL_NO= rtcu.SERIAL_NO
);
请帮忙....