※ ChatGPTを利用し、要約された質問です(原文:テーブルの更新を教えて下さい)
テーブルの更新方法を教えてください
2010/04/02 19:41
テーブルの更新を教えて下さい
素人勉強中です。
下記条件でUPDATEを行いたいのですが、ご教授願います。
【環境】
Oracle 10g
テーブル:拝送M
品番、種類、発注先、納入日
AAA X1 T001 2010/01/01
AAA X1 T001
AAA X1 T001
AAA X1 T002
テーブル:実績M
品番、種類、発注先、実績日
AAA X1 T001 2010/03/01
AAA X1 T001 2010/03/02
AAA X1 T002 2010/03/03
AAA X1 T002 2010/03/04
更新条件は以下になります。
・「拝送M」の「納入日」がNULLのものを更新したい(上書きはしない)
・2つのテーブルの結合キーは「品番」+「種類」+「発注先」(キーは張っていない)
・「拝送M」「実績M」とも重複あり
・「実績M」の「品番」+「種類」+「発注先」で集計し、「実績日」の一番小さい日を使って
「拝送M」の「納入日」をUPDATEする
【拝送M更新後】
品番、種類、発注先、納入日
AAA X1 T001 2010/01/01
AAA X1 T001 2010/03/01 ←UPDATE:実績Mの同一キーで「実績日」が一番小さい日付
AAA X1 T001 2010/03/01 ←UPDATE:実績Mの同一キーで「実績日」が一番小さい日付
AAA X1 T002 2010/03/03 ←UPDATE:実績Mの同一キーで「実績日」が一番小さい日付
SELECTで更新したい日付を抽出することは出来たのですが、この条件で得た日付をUPDATEするのに悩んでいます。
例えば、
SELECT J1.品番, J1.種類, J1.発注先, MIN(J1.実績日) FROM 拝送M T1, 実績M J1 WHERE CONCAT(CONCAT(RPAD(T1.品番,12), RPAD(T1.種類,3)), RPAD(T1.発注先,6)) = CONCAT(CONCAT(RPAD(J1.品番,12), RPAD(J1.種類,3)), RPAD(J1.発注先,6)) AND (((T1.納入日) IS NULL)) GROUP BY J1.品番, J1.種類, J1.発注先 ;
UPDATE文でなくても、FETCHとかでも良いと思っているのですが、素人の私にはまだまだ一人で解決できずに試行錯誤ばかりで進めません。
どなたか宜しくお願い致します。
質問の原文を閉じる
質問の原文を表示する