
お世話になります。
sqlserverのUPDATE文についてご教授ください。
以下テーブルでキーごとに金額1を累計金額1、金額2を累計金額2に集計しUPDATEしたいです。
参照(SELECT文)は実現できたのですがUPDATE文の書き方で悩んでいます。
申し訳ありませんがご教授ください。
【テーブル】
No キー 年月 金額1 金額2 累計金額1 累計金額2
1 001 201804 10,000 5,000 10,000 5,000
2 001 201805 20,000 6,000 30,000 11,000
3 002 201804 50,000 7,000 50,000 7,000
【SELECT文】
SELECT SUM(金額1) OVER (PARTITION BY キー
ORDER BY 年月
ROWS UNBOUNDED PRECEDING) AS 累計金額1,
SUM(金額2) OVER (PARTITION BY キー
ORDER BY 年月
ROWS UNBOUNDED PRECEDING) AS 累計金額2
FROM テーブル
ORDER BY キー,年月;

No.1ベストアンサー
- 回答日時:
UPDATE テーブル
SET 累計金額1 = A.累計金額1
, 累計金額2 = A.累計金額2
FROM (SELECT キー, 年月
, SUM(金額1) OVER(PARTITION BY キー
ORDER BY 年月
ROWS UNBOUNDED PRECEDING) AS 累計金額1
, SUM(金額2) OVER(PARTITION BY キー
ORDER BY 年月
ROWS UNBOUNDED PRECEDING) AS 累計金額2
FROM テーブル) AS A
WHERE テーブル.キー = A.キー
AND テーブル.年月 = A.年月;
みたいな感じ。
回答ありがとうございます。
試したところ以下(A.累計金額1とA.累計金額2)で構文エラーが出てしまいました。
下文の 'FROM テーブル) AS A' で定義しているので問題ないと思いますが。。。
UPDATE テーブル
SET 累計金額1 = A.累計金額1
, 累計金額2 = A.累計金額2
【構文エラー】
列名'累計金額1'が無効です。
列名'累計金額2'が無効です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
updateでグループ化
SQL Server
-
SUBSTRING 関数に渡した長さのパラメータが無効です。
SQL Server
-
テーブルレーコードをソートして更新するにはどうしたらいいでしょうか?
SQL Server
-
-
4
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
5
SQLで列名を変数にできないでしょうか
SQL Server
-
6
INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
その他(データベース)
-
7
SQL>UPDATEと同時にその件数をCOUNTする方法
その他(データベース)
-
8
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
9
副問合せの書き方について
SQL Server
-
10
テーブルの集計値を別テーブルに更新したいのですが
MySQL
-
11
UPDATE文のWHERE条件に他のテーブルのフィールドも入れたい
SQL Server
-
12
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
13
【DB】同じトランザクション内でupdateとselectをしたときの結果値
その他(データベース)
-
14
【SQLサーバ】float型における小数点以下のデータを抽出する方法について
SQL Server
-
15
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
16
バッチファイルからのBCP起動について
SQL Server
-
17
GROUP BYを行った後に結合したい。
Oracle
-
18
「警告 : NULL 値は集計またはその他の SET 演算で削除されました。」
SQL Server
-
19
ユーザー定義関数内でのsp_executesqlプロシージャの使用
SQL Server
-
20
【Transact-sql】 execの結果をoutputパラメータに持たせたい
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
オラクルではできるのにSQLSERV...
-
sqlserverで集計結果をUPDATEし...
-
sqlserverで同一キー単位で金額...
-
アクセス 日付抽出(年月のみ)...
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
Access カレントレコードがあり...
-
ストアドをまたがるローカル一...
-
SELECT時の行ロックの必要性に...
-
SELECT文でのデッドロックに対...
-
Access VBA Me.Requery レコー...
-
DB INSERT 時の排他制御について
-
SQL Server のデータをCSVファ...
-
既に使用されているので、使用...
-
請求と入金のテーブルの作成の...
-
Access VBA [リモートサーバー...
-
SQLで○○の値以外を持っているレ...
-
mysql IN句に1データだけ指定...
-
クエリのキャンセルがいつにな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのSQLで、NULLかNULLでな...
-
オラクルではできるのにSQLSERV...
-
sqlserverで集計結果をUPDATEし...
-
アクセス 日付抽出(年月のみ)...
-
違いを教えてください
-
更新クエリでキー違反
-
sqlserverでUPDATEできません
-
sqlserverで同一キー単位で金額...
-
MAX値を条件にデータを取得する...
-
sqlplusでバックスペースが効か...
-
プライマリーキーで同じ値をUPD...
-
Access2000へのインポートエラー
-
sqlserverで対象のレコードを削...
-
片方のテーブルにないデータを...
-
ACCESSで複数テーブルを結合し...
-
シャープレジスター エラーコード
-
Access 2010動きが遅い
-
accessでのリンクテーブルの更新
-
IDが重複した場合、その他のデ...
-
AccessのSQLで、FROM句の構文エ...
おすすめ情報
補足させていただきます。
'No'の項目は使用できないことに気づきました。
以下訂正させていただきます。
何卒よろしくお願いいたします。
【テーブル】※修正後
キー 年月 金額1 金額2 累計金額1 累計金額2
001 201804 10,000 5,000 10,000 5,000
001 201805 20,000 6,000 30,000 11,000
002 201804 50,000 7,000 50,000 7,000
構文エラーはただの記載ミスでした。申し訳ありません。。。
期待する結果になったこと確認いたしました。
本当にありがとうございました。