回答編集履歴

1

追記

2015/07/23 10:49

投稿

ngyuki
ngyuki

スコア4514

test CHANGED
@@ -89,3 +89,101 @@
89
89
 
90
90
 
91
91
  MySQL でやっています。日付の条件 `month(利用日) = 6` は、もう少しマシな方法に読み替えてもらえればと思います。
92
+
93
+
94
+
95
+ ---
96
+
97
+
98
+
99
+ 無理やり縦横の表形式にするならこんなかんじでしょうか。
100
+
101
+
102
+
103
+ ```sql
104
+
105
+ select
106
+
107
+ GameName as "5月/6月",
108
+
109
+ sum(case when GameName6 = 'Game1' then num else 0 end) as Game1,
110
+
111
+ sum(case when GameName6 = 'Game2' then num else 0 end) as Game2,
112
+
113
+ sum(case when GameName6 = 'Game3' then num else 0 end) as Game3
114
+
115
+ from
116
+
117
+ (
118
+
119
+ select GameName from t group by GameName
120
+
121
+ ) a
122
+
123
+ left join
124
+
125
+ (
126
+
127
+ select
128
+
129
+ t5.GameName as GameName5, t6.GameName as GameName6, count(*) as num
130
+
131
+ from
132
+
133
+ (
134
+
135
+ select UserID, GameName from t where month(利用日) = 5 group by UserID, GameName
136
+
137
+ ) t5
138
+
139
+ inner join
140
+
141
+ (
142
+
143
+ select UserID, GameName from t where month(利用日) = 6 group by UserID, GameName
144
+
145
+ ) t6
146
+
147
+ on
148
+
149
+ t5.UserID = t6.UserID
150
+
151
+ group by
152
+
153
+ t5.GameName, t6.GameName
154
+
155
+ ) x
156
+
157
+ on
158
+
159
+ a.GameName = x.GameName5
160
+
161
+ group by
162
+
163
+ GameName5
164
+
165
+ order by GameName
166
+
167
+ ```
168
+
169
+
170
+
171
+ ```
172
+
173
+ +-----------+-------+-------+-------+
174
+
175
+ | 5月/6月 | Game1 | Game2 | Game3 |
176
+
177
+ +-----------+-------+-------+-------+
178
+
179
+ | Game1 | 1 | 1 | 1 |
180
+
181
+ | Game2 | 1 | 1 | 1 |
182
+
183
+ | Game3 | 0 | 0 | 0 |
184
+
185
+ +-----------+-------+-------+-------+
186
+
187
+ ```
188
+
189
+