0
Customer

customer_id |   customer_name | customer_city | customer_number
---------------------------------------------------------------
   1        |   john          | sanjose       | 978234
   2        |   chris         | newyork       | 293
   3        |   mary          | madrid        | 342943
   4        |   tom           | bangkok       | 8627093
---------------------------------------------------------------

Data

data_id |   data_name  |    data_city   |   data_number |   data_cust_id |  customer_id
--------------------------------------------------------------------------------------------
   1    |   abc        |    xyz         |   990         |   1        |  NULL
   2    |   john       |    sanjose     |   978234      |   1        |  NULL
   3    |   mary       |    madrid      |   8627093     |   3        |  NULL
   4    |   tom        |    LA          |   7729        |   4        |  NULL


ActionType

action_id | action_description
-----------------------------------
1         | customer_name
2         | customer_number
3         | customer_city


DataToAction

id |    data_id | action_id
--------------------------
1  |    1       | 1
2  |    1       | 2
4  |    2       | 1
5  |    2       | 2
6  |    2       | 3
7  |    3       | 1
8  |    3       | 2
9  |    4       | 1

4つのテーブルがあります -

  1. 顧客 - 顧客データがあります
  2. データ - 外部ソースから取得した生データ (顧客データなどを含む)
  3. ActionType - 結合条件で使用される列名があります
  4. DataToAction - データ テーブルの生データ行ごとに、結合で使用される列をここで指定します。

目的- 「データ」テーブルに customer_id を入力する。私はこのようなものが必要です

UPDATE D
SET D.customer_id = C.customer_id
FROM Data D
INNER JOIN Customer C on D.data_cust_id = C.customer_id
WHERE *("GET THE COLUMNS TO BE MATCHED FROM DATATOACTION TABLE AND USE HERE")*

たとえば、データ ID 1 の場合は、customer_name と customer_number に基づいて customer_id を更新し、データ ID 2 の場合は、customer_name、customer_number と customer_city に基づいて customer_id を更新します。

一致する列が別のテーブルで指定されている各行の where 句で動的な列条件を適用するにはどうすればよいですか。

4

1 に答える 1

0

さて、質問はかなり不明確です。最終的な結果を詳しく説明できますか。ActionType テーブルの目的??

UPDATE D
SET D.customer_id = C.customer_id
FROM Data D
INNER JOIN Customer C on D.data_cust_id = C.customer_id
INNER JOIN DataToAction DA ON DA.data_id = D.data_id

于 2012-12-24T06:44:55.063 に答える