

下記の2つの表があり、
表Aから伝票番号毎に集計したTAXで、
同じ伝票番号をもつ表BのTAXを、一括更新しようと考えています。
表Bについては、伝票番号の中で最小の明細番号の行のみ
更新しなければなりません。
SQL-SERVERでは、下記のSQLでどうやら大丈夫そうなのですが、
Oracleでは、更新どころかエラーが発生してしまい、
途方に暮れています。
どなたか、ご教授頂けないでしょうか?
よろしくお願い致します。
update B
set 税額 = AA.税額合計
from B
inner join
(select 伝票番号, min(明細番号) as 最小明細番号
from B group by 伝票番号) as BB
on BB.伝票番号 = B.伝票番号 and BB.最小明細番号 = B.明細番号
inner join
(select 伝票番号, sum(税額) as 税額合計
from A group by 伝票番号) as AA
on AA.伝票番号 = B.伝票番号
(表A)
・伝票番号
・明細番号
・TAX
(表B)
・伝票番号
・明細番号
・金額
・TAX
No.2ベストアンサー
- 回答日時:
A,B間の明細番号が一致しないのであれば、次のSQLでいけると思いますよ。
update B
set TAX=(select sum(TAX) from A where A.伝票番号=B.伝票番号)
where (伝票番号,明細番号) in (select 伝票番号,min(明細番号) from B)
;
変更点が少ないのでお間違いなく。
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件の明細があり、
その種別(商品金額、税額)により、各々別表に格納されています。
ですので、この条件では、期待通りの更新はされないのでは?
と思いますが、如何でしょうか?
説明不足で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CREATE テーブルでの複数外部...
-
沿線コード
-
SQLの実行結果が異なる
-
Access2000の重複チェック
-
Access終了時の最適化が失敗?
-
10営業日前の日付を取得したい...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
Accessで別テーブルの値をフォ...
-
JSPのNULLレコード表示について...
-
OracleのSQL*PLUSで、デー...
-
決定性有限オートマトン
-
あるカラムのMAX値+1をINSERTし...
-
ADO VBA 実行時エラー3021
-
SQL文で素早くNULLを除外する方法
-
実績累計の求め方と意味を教え...
-
日本語の表名、列名の利用について
-
レコードが存在しなかった場合
-
アクセスでレポートの1印刷内...
-
ACCESSで大量の更新を行うと「...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access終了時の最適化が失敗?
-
沿線コード
-
CREATE テーブルでの複数外部...
-
Order by句でバインド変数を使...
-
ヤマト急便のチェックデジット...
-
【SQL】登録されているかを比較...
-
10営業日前の日付を取得したい...
-
困っています。ORACLE_SQL 複数...
-
同一コード毎に最新の名称を取...
-
Excelファイルのデータをテーブ...
-
XPアップロード後のアクセスの...
-
SQL 特定のカラムが最大値のレ...
-
SQLにて縦を横へ展開
-
RDBの親子関係の表現について
-
平成20年 春期 基本情報技術者 ...
-
Access Dlookup関数について
-
oracleでは出来るけど、access2...
-
SQL文の書き方
-
SQLについて
-
DLookupの設定で・・・
おすすめ情報