teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

文言微修正

2017/07/05 11:46

投稿

kurokoba
kurokoba

スコア276

answer CHANGED
@@ -1,9 +1,11 @@
1
1
  考え方だけ。
2
2
  やり方はたくさんあります。が基本的に
3
- 1.「こんなテーブルだったら簡単にできる」とういう状態を考える
3
+ 1.「こんなテーブルが存在したら簡単にできる」とういう状態を考える
4
- 2.サブクエリと集計関数で"こんなテーブル"の形を作る
4
+ 2.サブクエリと集計関数でほしい"こんなテーブル"の形を作る
5
+ 3.2て作った形を1に代入する。
5
6
  と考えると考えやすい。
6
- 部品をつくって組み上げていくという意味では手続き型プログラムと同じです。
7
+ 部品をつくって組み上げていくという意味では普通の手続き型プログラムと考え方は同じです。
8
+ 通常のプログラムがモジュールを作って組み上げていくのにたいし、SQLはサブクエリ等"部分集合"をつくって組み上げる。
7
9
  **方法その1:**
8
10
  テーブルBが20016年と20017年で別だったら?と考える
9
11
  テーブルBがテーブルB_2016、テーブルB_2017という2テーブルだったら簡単。ただの結合です。
@@ -95,4 +97,5 @@
95
97
  MAX(CASE WHEN 年=2016 THEN 身長 ELSE 0 END) AS 身長2016,
96
98
  MAX(CASE WHEN 年=2017 THEN 身長 ELSE 0 END) AS 身長2017
97
99
  FROM テーブルB GROUP BY ID) x ON x.ID = a.ID
98
- ```
100
+ ```
101
+ 性能とか考えるとまた別の話も必要ですが、とりあえずわりと汎用性の高い考え方の一つ。