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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

401閲覧

GROUP byで集計した2つの実行結果をマージしたいです。

POKUTE

総合スコア8

SQL Server

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/02/01 10:58

SQL SERVERで実行した下記、2つのSQLの実行結果をマージしたいです…

① 前月の作業者、顧客名、案件名毎で時間集計をしております。
SELECT 作業年月,作業者,顧客名,案件名,SUM(作業時間)as 作業時間
FROM [Test].[dbo].[テーブルA]
WHERE 作業年月 = SUBSTRING(CONVERT(Varchar,DATEADD(MONTH, -1, GETDATE()),111), 1, 7)
GROUP by 作業年月,作業者,顧客名,案件名

② 前月の作業者毎で作業時間の合計値を集計しております。
SELECT 作業年月,作業者,SUM(作業時間)as 作業時間_合計
FROM [Test].[dbo].[テーブルA]
WHERE 作業年月 = SUBSTRING(CONVERT(Varchar,DATEADD(MONTH, -1, GETDATE()),111), 1, 7)
GROUP by 作業年月,作業者

①の実行結果の最後尾に②で集計したような前月の作業時間の合計をつけたいのですが、うまくできません…。
理想は下記の通りです。

作業年月 作業者 顧客名 案件名 作業時間 作業時間_合計
2018/01 A氏 A社 TEST1  30    100
2018/01 A氏 A社 TEST2  30    100
2018/01 A氏 B社 TEST3  40    100
2018/01 B氏 A社 TEST1  80    150
2018/01 B氏 B社 TEST3  70    150

半日悩んでも全くわからず困っています。
お力をお貸しください。何卒、よろしくお願いいたします…。

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

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

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

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

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

guest

回答1

0

ベストアンサー

SQLServerの分析関数の使用例
https://oraclesqlpuzzle.ninja-web.net/sqlserver2008-sql1-olap.html
を見ながら作ってみました :-)

sql

1SELECT 作業年月,作業者,顧客名,案件名,SUM(作業時間)as 作業時間, 2sum(sum(作業時間)) over(partition by 作業年月,作業者) as 作業時間_合計 3FROM [Test].[dbo].[テーブルA] 4WHERE 作業年月 = SUBSTRING(CONVERT(Varchar,DATEADD(MONTH, -1, GETDATE()),111), 1, 7) 5GROUP by 作業年月,作業者,顧客名,案件名

投稿2018/02/01 23:11

編集2019/03/12 06:27
AketiJyuuzou

総合スコア1147

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

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

POKUTE

2018/02/02 01:32

理想の結果が出力できました!ありがとうございます!
sazi

2018/02/02 02:42

>AketiJyuuzouさん sum()のネスト「sum(sum(作業時間))」って必要です?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問