回答編集履歴
3
推敲
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
集計項目が増えたときは、sum()部分を追加します。
|
40
40
|
|
41
|
-
※crosstabだと
|
41
|
+
※crosstabだとカラムの並びを気にしなければ、変更は不要
|
42
42
|
|
43
43
|
|
44
44
|
|
2
推敲
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
上記のテーブルから目的の表を取り出す
|
21
|
+
上記のテーブルから目的の表を取り出すには、クロス集計を行えばいいだけです。
|
22
22
|
|
23
23
|
[crosstab](https://www.postgresql.jp/document/9.6/html/tablefunc.html)を使用して行うか、以下のようなSQLで取得できます。
|
24
24
|
|
1
追記
test
CHANGED
@@ -15,3 +15,41 @@
|
|
15
15
|
2018-01-02|青森|みかん|1
|
16
16
|
|
17
17
|
2018-01-02|北海道|みかん|5
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
上記のテーブルから目的の表を取り出すとするには、クロス集計を行えばいいだけです。
|
22
|
+
|
23
|
+
[crosstab](https://www.postgresql.jp/document/9.6/html/tablefunc.html)を使用して行うか、以下のようなSQLで取得できます。
|
24
|
+
|
25
|
+
```SQL
|
26
|
+
|
27
|
+
select dt, 都道府県
|
28
|
+
|
29
|
+
,sum(case 区分 when 'りんご' then 値 end) as りんご
|
30
|
+
|
31
|
+
,sum(case 区分 when 'みかん' then 値 end) as みかん
|
32
|
+
|
33
|
+
from table
|
34
|
+
|
35
|
+
group by dt, 都道府県
|
36
|
+
|
37
|
+
```
|
38
|
+
|
39
|
+
集計項目が増えたときは、sum()部分を追加します。
|
40
|
+
|
41
|
+
※crosstabだと変更はカラムの並びを気にしなければ、変更は不要
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
その他の方法としては、配列に畳んで、取得した側で処理するとか
|
46
|
+
|
47
|
+
```SQL
|
48
|
+
|
49
|
+
select dt, 都道府県,arry_agg(区分 order by 区分),arry_agg(値 order by 区分)
|
50
|
+
|
51
|
+
from table
|
52
|
+
|
53
|
+
group by dt, 都道府県
|
54
|
+
|
55
|
+
```
|