tableAをクロス集計するとどのような経過を経て最終結果になるのか知りたいです。
tableA
| dt | val | label |
|---|---|---|
| 1/1 | 1 | A |
| 1/1 | 5 | B |
| 1/2 | 2 | A |
まず以下のコードで
lang
1select dt from tableA
以下になる(うまく表になりませんでした…)
| dt |
|---|
| 1/1 |
| 1/1 |
| 1/2 |
| 次に以下のコードなのですが |
| ```lang-sql |
| select dt, |
max(case when label = 'A' then val end) as A
from tableA
以下になるのでしょうか。 |dt|A| |:--|:--| |1/1|1| |1/1|| |1/2|2| また、次のコードで ```lang-sql select dt, max(case when label = 'A' then val end) as A, max(case when label = 'B' then val end) as B from tableA
以下になるのでしょうか。
| dt | A | B |
|---|---|---|
| 1/1 | 1 | |
| 1/1 | 5 | |
| 1/2 | 2 |
最後にgroup byをして
lang
1select dt, 2 max(case when label = 'A' then val end) as A, 3 max(case when label = 'B' then val end) as B 4from tableA 5group by dt
最終結果が得られる、であってますでしょうか。
| dt | A | B |
|---|---|---|
| 1/1 | 1 | 5 |
| 1/2 | 2 |
回答3件
あなたの回答
tips
プレビュー
2018/08/03 13:23