以下テーブルでキー①ごとにキー➁がブレイクするたびに金額を集計するUPDATE文を作りたいです。
キー➁が同一の場合は最新の年月を採用します。
金額はすべてキー①単位で集計し設定します。
(キー①が001のレコードの金額は一律、90,000(20,000+30,000+40,000)で出力したいです。)
なかなかうまく書けず困っています。。
どなたかご教授願います。
【実行前テーブル】
No キー① キー➁ 年月 金額
1 001 111 201804 10,000
2 001 111 201805 20,000
3 001 112 201804 30,000
4 001 113 201806 40,000
5 002 222 201807 50,000
6 002 222 201808 60,000
【実行後テーブル】
No キー① キー➁ 年月 金額
1 001 111 201804 90,000
2 001 111 201805 90,000
3 001 112 201804 90,000
4 001 113 201806 90,000
5 002 222 201807 60,000
6 002 222 201808 60,000
No.1ベストアンサー
- 回答日時:
すみません、その「ブレイクするたび」って言葉をどういう意味で使っているのかがわかりません。
例を見ると
キー①、キー② のグループ、最新年月の金額を取得し、
それをキー①毎に合計する。
合計結果で元テーブルをUPDATEする。
というように見えます。
もし、上記でよいのなら、以下の考えでできるはずです。
(1) キー①、キー② のグループで、各グループの最大年月 を取得する
キー① キー➁ 年月
001 111 201805
001 112 201804
001 113 201806
002 222 201808
(2) 元テーブルと(1) とをINNER JOINして、該当する行だけ抽出する
No キー① キー➁ 年月 金額
2 001 111 201805 20,000
3 001 112 201804 30,000
4 001 113 201806 40,000
6 002 222 201808 60,000
(3) (2) を キー①でグループにして、各グループの総和を取得する
キー① 合計金額
001 90,000
002 60,000
(4) (3)の内容で元テーブルをUPDATE
「(使っているデータベースシステム名) UPDATE JOIN」で検索すれば見つかるはず
ただ、そもそも、やりたいことはそれでいいの?という疑問があります。
列名から推測すると、月毎の売上金額とか単価とかのデータに見えます。
そうだとすると、UPDATEしてしまうと
「001 111の2018年05月の売上は20,000円でした」
という情報が
「001 111の2018年05月の売上は90,000円でした」
と書き変わってしまい、二度と「20,000円でした」という情報が得られなくなってしまいます。
7 001 111 201811 30,000
って行が追加されたのなら、元の状態なら
001 100,000
になるはずが
001 210,000
※ 111が30,000 112が90,000 113が90,000
になってしまいます。
こんな変な計算、実社会で使っているとは思えません。
(3)の合計を求めるところでやめるか、結果を「合計テーブル」みたいな別のテーブルに保存するか、というのが通常の運用方法だと思います。
上記に補足させていただきました。
回答いただいた内容を参考にさせていただきます。
説明足らずの質問に回答いただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- カラオケ 原曲キー設定で歌った事を原曲キーと言ってはいけないんでしょうかね? 5 2023/06/01 23:00
- その他(Microsoft Office) Excel VBA で条件に合わせて行を合算する方法 2 2022/04/27 14:21
- オープンソース VScodeでステップ実行が出来ない 1 2023/04/03 22:40
- マウス・キーボード 不良表示キー(キーボード) 3 2022/04/27 10:53
- カラオケ 原曲キー設定で歌った事を原曲キーと言ってはいけないんでしょうかね? 5 2023/05/01 20:00
- カラオケ 音楽的にオク下やオク上であっても「設定したキー」で歌えば「そのキー」で歌った事になるんでしょうか? 2 2023/08/01 23:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
access前月差分クエリ書き換え...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
アクセス 日付抽出(年月のみ)...
-
違いを教えてください
-
ACCESSで複数テーブルを結合し...
-
sqlplusでバックスペースが効か...
-
プライマリーキーで同じ値をUPD...
-
「マスタ」と「テーブル」の違...
-
accessテーブル作成クエリを実...
-
SELECT文でのデッドロックに対...
-
2つの項目が重複するレコード...
-
[ BETWEEN ] vs [ >= AND <= ]
-
2つのテーブルから条件に一致...
-
Accessでクエリを完了できませ...
-
続.ORACLEのSELECTのソートに...
-
数百万件レコードのdelete
-
Accessにインポートしたら並び...
-
mysql IN句に1データだけ指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
オラクルではできるのにSQLSERV...
-
sqlserverで集計結果をUPDATEし...
-
アクセス 日付抽出(年月のみ)...
-
更新クエリでキー違反
-
シャープレジスター エラーコード
-
MAX値を条件にデータを取得する...
-
sqlplusでバックスペースが効か...
-
ACCESSで複数テーブルを結合し...
-
違いを教えてください
-
AccessのSQLで、FROM句の構文エ...
-
sqlserverで対象のレコードを削...
-
片方のテーブルにないデータを...
-
集計処理について
-
access前月差分クエリ書き換え...
-
sqlserverで同一キー単位で金額...
-
レコードの有無をすばやく検索...
-
accessでのリンクテーブルの更新
-
Access2000へのインポートエラー
-
プライマリーキーで同じ値をUPD...
おすすめ情報
以下補足いたします。
前提としてSQLSERVERです。
(最初に誤ってPostgreに投稿してしまい、削除できていませんでした)
金額の編集仕様は、
(1)キー①・②のグループ、最新年月の金額を取得し、キー①ごとに合計します。(集計用の金額項目を追加し、ここに出力します)
(2)キー①単位で集約する。
言葉足らずで申し訳ありませんでした。
実行イメージは以下になります。
(1)【実行後テーブル】
No キー① キー➁ 年月 金額 キー①単位の金額
1 001 111 201804 10,000 90,000
2 001 111 201805 20,000 90,000
3 001 112 201804 30,000 90,000
4 001 113 201806 40,000 90,000
5 002 222 201807 50,000 60,000
6 002 222 201808 60,000 60,000
(2)【実行後テーブル】
キー① キー①単位の金額
001 90,000
002 60,000