У меня есть данные, как это:MySQL - Как я могу сделать запрос для этого вывода?
+-------+--------+---------------------+
| name | status | date |
+-------+--------+---------------------+
| Peter | 100 | 2015-06-20 12:12:00 |
| Peter | 100 | 2015-06-20 15:12:00 |
| James | 100 | 2015-06-20 10:12:00 |
| James | 200 | 2015-06-20 14:12:00 |
| James | 100 | 2015-06-21 06:12:00 |
| James | 100 | 2015-06-21 09:12:00 |
| Peter | 200 | 2015-06-21 13:12:00 |
| Peter | 100 | 2015-06-21 14:12:00 |
И я хочу такой вывод:
+----------+-------+-------+-------+
| date | Peter | James | Total |
+----------+-------+-------+-------+
| 20150620 | 2 | 2 | 4 |
| 20150621 | 2 | 2 | 4 |
+----------+-------+-------+-------+
Я использую select
заявление ниже:
select DATE_FORMAT(date, "%Y%m%d") as date,
SUM(IF(name = "Peter", 1,0)) AS "Peter",
SUM(IF(name = "James", 1,0)) AS "James",
SUM(IF(name != "0", 1,0)) AS "Total"
from test group by DAYOFMONTH (date);
Но что я должен делать, если я имеют много имен? Я не могу поместить все имена в select state in SUM(IF name ="????")
.
Возможный дубликат [MySQL сводной таблицы] (http://stackoverflow.com/questions/7674786/mysql-pivot-table) – Barranka
Вы ищете поворот таблицы. Если вы Google mysql pivot, вы получите много учебников и связанных с ними вопросов. Взгляните на это: http://stratosprovatopoulos.com/web-development/mysql/pivot-a-table-in-mysql/ –