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

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

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

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

Q&A

1回答

248閲覧

データ移行で同じ条件の複数レコードを1つのレコードにする。その際にあるカラムの数字を合計する方法を教えてください。

eri_bebe

総合スコア7

SQL

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

0グッド

1クリップ

投稿2018/12/19 12:46

以下のようなデータがあります

※()内は実際はそれぞれのマスタテーブルで持ってる情報です

テーブル1:(旧)従業員数データ

id会社勤務先ID職種ID従業員数
111(営業)10
212(エンジニア)5
321(営業)20
432(エンジニア)10

テーブル2:会社勤務先データ

id会社ID勤務先ID
11(会社A)1(東京)
21(会社A)2(大阪)
32(会社B)1(東京)
42(会社B)2(大阪)

これを以下のように変更したいです

テーブルA:(新)従業員数データ

id会社職種ID従業員数
1130(*会社Aの東京と大阪の営業の合計)
225
3320
4410

テーブルB:会社職種データ

id会社ID職種ID
11(会社A)1(営業)
21(会社A)2(エンジニア)
32(会社B)1(営業)
42(会社B)2(エンジニア)

どのようにかけばいいでしょうか。

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

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

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

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

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

sazi

2018/12/19 14:14

(旧)従業員数データが会社A・会社Bどちらに属するかの情報が無いように見受けられますけど。
eri_bebe

2018/12/20 09:57

会社データは、テーブル2の会社勤務先データのほうに持っており、(旧)従業員数データで会社勤務先IDをもつことで判断されています。
guest

回答1

0

新テーブルのIDや会社職種ID以外は以下のSQLで取り出せます

SQL

1select t2.会社ID, t1.職種ID, sum(t1.従業員数) as 新従業員数 2from テーブル1 as t1 inner join テーブル2 as t2 3 on t1.会社勤務先ID=t2.ID 4group by t2.会社ID, t1.職種ID

これを元に新テーブルを作成します。

IDはオートナンバーで良いとしても、会社職種IDはどういうルールで番号付けするんでしょう?
単に連番でいいなら、後からIDを複写するのが簡単だと思いますけど。

投稿2018/12/20 10:33

sazi

総合スコア25173

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問