
以下テーブルでキー①ごとにキー➁がブレイクするたびに金額を集計する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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLについて
-
自己相関サブクエリと自己結合...
-
.SQLファイルをvbaで実行
-
Microsoft SQL Serverについて
-
Wacom Cintiq 16 と Wacom Cint...
-
SQLをはじめから勉強するには
-
SQL クエリ データ数
-
SQL Server management studio ...
-
Tverは無料でしょうか?
-
サーバー破壊
-
Visuaal Studio Community 2022...
-
Access2021 「ISNULL関数には引...
-
甘いものがすきなのってなおせ...
-
SQLて何ですか!
-
生え際から顎先まで17.5 頭頂か...
-
sql serveについて
-
SQLを駆使したデータ抽出ってど...
-
DBのテーブルの設計ができず困...
-
T-SQLを無料で勉強したいです。...
-
AccessのInsertクエリのあとつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
sqlserverで集計結果をUPDATEし...
-
オラクルではできるのにSQLSERV...
-
違いを教えてください
-
sqlserverでUPDATEできません
-
sqlserverで同一キー単位で金額...
-
MAX値を条件にデータを取得する...
-
更新クエリでキー違反
-
AccessのSQLで、FROM句の構文エ...
-
アクセス 日付抽出(年月のみ)...
-
IDが重複した場合、その他のデ...
-
Access2000へのインポートエラー
-
sqlserverで対象のレコードを削...
-
シャープレジスター エラーコード
-
集計処理について
-
sqlplusでバックスペースが効か...
-
Access2つのテーブルの差額を...
-
SQLSERVERの抽出処理について
-
ACCESSで複数テーブルを結合し...
-
レコードの有無をすばやく検索...
おすすめ情報
以下補足いたします。
前提として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