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

回答編集履歴

2

推敲

2019/11/16 13:17

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -15,8 +15,8 @@
15
15
  下記で、type_listにtypeが列挙され、それと同じ並びでtype毎の計が列挙されます。
16
16
  ```SQL
17
17
  select date, sum(type_total) sub_total
18
- , array_agg(type order by type) type_list
18
+ , array_agg(type order by type) type_ary
19
- , array_agg(type_total order by type) type_total_list
19
+ , array_agg(type_total order by type) type_total_ary
20
20
  from (
21
21
  SELECT date, type, SUM(amount) AS type_total
22
22
  FROM table t1 left join type_table t2

1

追記

2019/11/16 13:17

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -8,4 +8,21 @@
8
8
  FROM table t1 left join type_table t2
9
9
  on t1.type_id=t2.id
10
10
  GROUP BY date
11
- ```
11
+ ```
12
+
13
+ 追記
14
+ --
15
+ 下記で、type_listにtypeが列挙され、それと同じ並びでtype毎の計が列挙されます。
16
+ ```SQL
17
+ select date, sum(type_total) sub_total
18
+ , array_agg(type order by type) type_list
19
+ , array_agg(type_total order by type) type_total_list
20
+ from (
21
+ SELECT date, type, SUM(amount) AS type_total
22
+ FROM table t1 left join type_table t2
23
+ on t1.type_id=t2.type_id
24
+ GROUP BY date, type
25
+ ) step1
26
+ group by date
27
+ ```
28
+ 後は受け取るプログラム側で、typeテーブルで列の数を決めて、該当する箇所に埋め込むようにします。