• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UPDATEで困っています)

UPDATEで困っています

このQ&Aのポイント
  • 表Aと表Bがあり、表Aから伝票番号毎に集計したTAXを、表Bの対応する伝票番号の行のTAXに一括更新しようとしています。
  • SQL-SERVERでは正常に動作していますが、Oracleではエラーが発生しています。
  • どなたか、OracleでのUPDATEの方法や解決策をご教授頂けないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

A,B間の明細番号が一致しないのであれば、次のSQLでいけると思いますよ。 update B set TAX=(select sum(TAX) from A where A.伝票番号=B.伝票番号) where (伝票番号,明細番号) in (select 伝票番号,min(明細番号) from B) ; 変更点が少ないのでお間違いなく。

trabis
質問者

お礼

うまく更新できました。 ありがとうございます!

その他の回答 (1)

回答No.1

説明の通りやれば良いのであれば・・ update B set TAX=(select sum(TAX) from A where A.伝票番号=B.伝票番号) where (伝票番号,明細番号) in (select 伝票番号,min(明細番号) from A) ; な感じ。

trabis
質問者

補足

ご回答ありがとうございます。 せっかく、ご教授頂きました内容ですが、 select 伝票番号,min(明細番号) from A)では、 表Aの一番小さい明細番号と同一の明細番号をもつ、 表Bを更新する内容だと思います。 この表AとBとは、同一の伝票番号でリンクしていますが、 明細番号は同一ではありません。 1つの伝票番号にN件の明細があり、 その種別(商品金額、税額)により、各々別表に格納されています。 ですので、この条件では、期待通りの更新はされないのでは? と思いますが、如何でしょうか? 説明不足で申し訳ありません。