私は SQL と SQL サーバーに非常に慣れていないので、次の問題について何か助けていただければ幸いです。
株価表を新しい価格で更新しようとしています。
テーブルには、株式コード、日付、価格の 3 つの列があります。
シェアコード + 日付 = PK
ご想像のとおり、数千の株式コードとそれぞれの 10 年間のデータがある場合、テーブルは非常に大きくなる可能性があります。そのため、共有 ID テーブルと呼ばれる別のテーブルを作成し、代わりに最初のテーブルで共有 ID を使用しました (整数による検索は文字列よりも高速であるため、これによりクエリが高速化されることが確実に通知されました)。
要約すると、次のように2つのテーブルがあります。
Table 1 = Share_code_ID (int), Date, Price
Table 2 = Share_code_ID (int), Share_name (string)
では、テーブルを今日の株式 ZZZ の価格で更新したいとしましょう。する必要がある:
- 表 2 で「ZZZ」に対応する Share_code_ID を探します。
- 見つかった場合は、先ほど見つけた Share_code_ID を使用して、その日付の新しい価格でテーブル 1 を更新します。
- Share_code_ID が見つからない場合は、両方のテーブルを更新します
ここでは、Share_code_ID が新しいコードに対してどのように生成されるかを無視しましょう。それについては後で考えます。
次の構造に基づいて大まかにマージクエリを使用しようとしていますが、何をしているのかわかりません:
MERGE INTO [Table 1]
USING (VALUES (1,23-May-2013,1000)) AS SOURCE (Share_code_ID,Date,Price)
{ SEEMS LIKE THERE SHOULD BE AN INNER JOIN HERE OR SOMETHING }
ON Table 2 = 'ZZZ'
WHEN MATCHED THEN UPDATE SET Table 1.Price = 1000
WHEN NOT MATCHED THEN INSERT { TO BOTH TABLES }
どんな助けでも大歓迎です。