うまくいけば、これは私よりもあなたのために簡単なものです。私は別の一致するテーブルからテーブルへの挿入を実行しようとしていますが、行がまだ存在していない場合にのみ挿入します。行内のこれらの値の一部は、変更される可能性があります。それは大丈夫です。2つの識別列のみを使用してINSERT INTOを除外します
挿入の際に2つの列が一致した場合、そのまま挿入してそのまま残しておくと思っています。これら2つの列が一致しない場合は、行を挿入します。私はマージを見て、INSERT INTO EXCEPTも見ました。このコードは動作しますが、必要なものではありません。
INSERT INTO LotDetail
SELECT UID, LotKey, SerialNo, TypeID, HotWeight, YieldGradKey, PeltGrade,
WeightRange, MarketValue, PremiumDiscount, PeltValue, OffalValue,
PricingKey, USDAGrade, [Timestamp] FROM LotDetail
EXCEPT
SELECT UID, LotKey, SerialNo, TypeID, HotWeight, YieldGradKey, PeltGrade,
WeightRange, MarketValue, PremiumDiscount, PeltValue, OffalValue,
PricingKey, USDAGrade, [Timestamp] FROM LotDetail_STAGING
上記のコードの問題は、すべての列を一致させる必要があります。そうでないと、テーブル定義が一致しないことがわかります。私は識別子としてタイムスタンプとシリアル番号だけを使いたい。私は、他のフィールドが変更される可能性があるので、一致させたくありません。
問題は、すでにレコードがLotDetailテーブルに存在し、 'hotweight'または 'marketvalue'が変更されている場合、その変更を保持してレコードを上書きしないことです。私は単に 'serialno'と 'timestamp'が存在しないときにだけ挿入するようにしています。これらのフィールドは変更できません。何かご意見は?
ありがとうございます。これはまさに私が必要としていたものです。それは完璧をテストする。 –