現在、ある同一のテーブルから別のテーブルに項目をコピーする SQL 挿入ステートメントがあります。
ソース テーブルには、多数の同一のレコード、またはわずかに異なる可能性があるレコードがあります。
例...
ソース テーブルと宛先テーブルの形式は次のとおりです。
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 が同じレコードは存在しないはずです。
しかし、Except ステートメントを使用すると、レコード全体が考慮されるため、まだ重複しています。
次のことを試しましたが、成功しませんでした:
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
);
助けてください....