質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

2回答

687閲覧

[SQL Server] 各番号ごとの前月値の取得とピボット解除

grape123

総合スコア8

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2022/07/13 08:01

編集2022/07/13 08:07

前提

SQL初心者ですが、SQL Serverでテーブル内のデータ加工をしています。
使用しているデータ(サンプル)は以下の通りです。
イメージ説明

実現したいこと

SQL Serverで以下を実現しようとしています。

  1. [Number]と[Date]でValueを集計(Group by)
  2. 各Numberごとの前月値(前月のValue)を取得
  3. [Value]と[前月値のValue]を1つの列に統合し、統合した2つの列名を新しい列[Category]に表示(ピボット解除?)

イメージ説明

現在の状況

現在は下記の式で、1.の [Number]と[Date]でValueを集計するところまでできているところですが、
2.以降の各Numberごとの前月値の取得からどうやれば良いのか分からず止まっています…。

SELECT [Number] ,[Date] ,[Value] FROM [SampleTable] WHERE [Date] > DATEADD(MONTH, 4, GETDATE()) GROUP BY [Number] ,[Date]

初心者であるため質問なども分かりにくいかもしれませんが、
どなたか良いアイデアや方法をご存じでしたら教えていただけないでしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CUBEROLLUPオプションを試して下さい。
SELECT - GROUP BY- Transact-SQL
Rollupちゃんと理解してる?

場面によってはWindow関数(lag/lead)も視野に入れて。

投稿2022/07/13 08:21

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

次のようなSQLになるかと思います。

SQL

1SELECT number, date, category, value 2FROM ( 3 SELECT number, date, SUM(value), 'Value', 1 4 FROM tbl 5 GROUP BY number, date 6 UNION ALL 7 SELECT number, date, LAG(SUM(value)) OVER (PARTITION BY number ORDER BY date), '前月のValue', 2 8 FROM tbl 9 GROUP BY number, date 10) AS T (number, date, value, category, priority) 11WHERE value IS NOT NULL 12ORDER BY number, date, priority

投稿2022/07/14 04:07

neko_the_shadow

総合スコア2230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問