家・車以外で、人生で一番奮発した買い物

お世話になります。
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 金額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

      補足日時:2018/08/29 14:47
  • HAPPY

    構文エラーはただの記載ミスでした。申し訳ありません。。。
    期待する結果になったこと確認いたしました。
    本当にありがとうございました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/08/30 10:25

A 回答 (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.年月;

みたいな感じ。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
試したところ以下(A.累計金額1とA.累計金額2)で構文エラーが出てしまいました。
下文の 'FROM テーブル) AS A' で定義しているので問題ないと思いますが。。。

UPDATE テーブル
SET 累計金額1 = A.累計金額1
, 累計金額2 = A.累計金額2

【構文エラー】
列名'累計金額1'が無効です。
列名'累計金額2'が無効です。

お礼日時:2018/08/30 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報

このQ&Aを見た人がよく見るQ&A