これは実際の例です。私の sqlfiddle を見てください。
http://sqlfiddle.com/#!3/d8902/1
すべてのデータが送信される TickData と、[ES 09-11_Part01] および [ES 09-11_Part02] という重複データを持つデータを含む 2 つのソース テーブルの 3 つのテーブルがあります。
注意してください、sqlfiddle では ES 09-11_Part0X の 2 つのテーブルにデータを入力しただけですが、実際には各ソース テーブルで 400 万行以上を扱っています。
2 つのテーブルから TickData に行を挿入する必要があり、重複を避ける必要がありますが、2 つの注意点があります。
まず、TickData.LastDateTime は [ES 09-11_Part0X].LastDate と [ES 09-11_Part0X].LastTime を合成したものです。
次に、[ES 09-11_Part0X] から、CQGTickId および LastTime を含む LastDate がそれぞれ TickId および TickData.LastDateTime と等しい場合にのみ、重複が識別されます。CQGTickId または TickId 自体は一意ではなく、日付フィールドと組み合わせる必要があります。
レコードが TickData に既に存在する場合、TickData に重複を挿入しないようにするにはどうすればよいですか。ソース テーブルから TickData に挿入しないでください。また、ソース テーブルに重複データがある場合は [ES 09-11_Part0X] 1 回だけ挿入する必要があります。 TickData に。
私のsqlfiddleでは、[ES 09-11_Part02]には[ES 09-11_Part01]にすでに存在する1つのレコードがあることに注意してください
('2011-04-05','14:12:07.4758734',12267,1,70,12267,12269,163377)
また、[ES 09-11_Part02] には、3 回発生する独自のテーブル内に別の重複が含まれています
('2011-04-06','00:47:31.2748398',12272,1,12,12269,12272,194813)
したがって、ソース テーブルから 2 回挿入した後の TickData の最終出力には、行 6、9、および 10 は含まれません。データは 1 回だけ存在する必要があります。
これは Stock Ticks データの実際の例であるため、正確で信頼できるものである必要があります。また、TickData を追加のソース テーブルで継続的に更新する必要があります。このソース テーブルには、値が重複して重複している可能性があります。
TSQL の天才に感謝します。:D
(元のリンク: http://sqlfiddle.com/#!3/c504b/1 )