サンプルテーブル:
+------+--------+---------+
| id | type | date |
+------+--------+---------+
| 1 | A | 201205 |
| 2 | A | 201206 |
| 3 | A | 201206 |
| 4 | A | 201207 |
| 5 | B | 201205 |
| 6 | B | 201206 |
| 7 | C | 201206 |
| 8 | C | 201206 |
+------+--------+---------+
目標: 毎月の各タイプの金額を表示する:
+------+--------+--------+--------+
| | 201205 | 201206 | 201207 |
+------+--------+--------+--------+
| A | 1 | 2 | 1 |
| B | 1 | 1 | 0 |
| C | 0 | 2 | 0 |
+------+--------+--------+--------+
実際のテーブルには何ヶ月もあるのですが、わざわざ結合を使わずにSQLを書く方法は?
これを行うために複数の結合を使用しました.SQLは非常に長くなり始め、別の言語を使用して動的に生成する必要がありました.
SELECT type ``, a.201205, b.201206, c.201207 FROM
(SELECT type FROM t GROUP BY type) foo
LEFT OUTER JOIN
(SELECT count(id) `201205` ,type FROM t WHERE date = '201205' GROUP BY type) a
USING (type)
LEFT OUTER JOIN
(SELECT count(id) `201206` ,type FROM t WHERE date = '201206' GROUP BY type) b
USING (type)
LEFT OUTER JOIN
(SELECT count(id) `201207` ,type FROM t WHERE date = '201207' GROUP BY type) c
USING (type)
PS: 投稿の適切なタイトルが見つかりません。変更を手伝ってください。