- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UPDATEで困っています)
UPDATEで困っています
このQ&Aのポイント
- 表Aと表Bがあり、表Aから伝票番号毎に集計したTAXを、表Bの対応する伝票番号の行のTAXに一括更新しようとしています。
- SQL-SERVERでは正常に動作していますが、Oracleではエラーが発生しています。
- どなたか、OracleでのUPDATEの方法や解決策をご教授頂けないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
A,B間の明細番号が一致しないのであれば、次のSQLでいけると思いますよ。 update B set TAX=(select sum(TAX) from A where A.伝票番号=B.伝票番号) where (伝票番号,明細番号) in (select 伝票番号,min(明細番号) from B) ; 変更点が少ないのでお間違いなく。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.1
説明の通りやれば良いのであれば・・ update B set TAX=(select sum(TAX) from A where A.伝票番号=B.伝票番号) where (伝票番号,明細番号) in (select 伝票番号,min(明細番号) from A) ; な感じ。
質問者
補足
ご回答ありがとうございます。 せっかく、ご教授頂きました内容ですが、 select 伝票番号,min(明細番号) from A)では、 表Aの一番小さい明細番号と同一の明細番号をもつ、 表Bを更新する内容だと思います。 この表AとBとは、同一の伝票番号でリンクしていますが、 明細番号は同一ではありません。 1つの伝票番号にN件の明細があり、 その種別(商品金額、税額)により、各々別表に格納されています。 ですので、この条件では、期待通りの更新はされないのでは? と思いますが、如何でしょうか? 説明不足で申し訳ありません。
お礼
うまく更新できました。 ありがとうございます!