Я бы хотел перенести результаты запроса MySQL из строки row => value resultset в набор результатов, где ключ является заголовком столбца, а значение является строкой для этого колонка.Перенос результатов запроса MySQL
т.е. Учитывая следующие данные
|------------------+-------------|
| CLASS_LESSON | ATTENDANTS |
|------------------+-------------|
| class1art | 1 |
| class1history | 1 |
| class2geography | 2 |
|------------------+-------------|
Я хотел бы превратить его в
|------------+---------------+------------------|
| class1art | class1history | class2geography |
|------------+---------------+------------------|
| 1 | 1 | 2 |
|------------+---------------+------------------|
Предположим, что пары класс/урок динамичны; они могут быть добавлены или удалены в любое время. Я не хочу явно их вызывать, как предложено в решении typical 'pivot table' sql.
select
MAX(CASE WHEN class_lesson = 'class1art' THEN attendants ELSE 0 END) AS class1art,
MAX(CASE WHEN class_lesson = 'class1history' THEN attendants ELSE 0 END) AS class1history,
MAX(CASE WHEN class_lesson = 'class2geography' THEN attendants ELSE 0 END) AS class2geography,
MAX(CASE WHEN class_lesson = 'class7art' THEN attendants ELSE 0 END) AS class7art,
MAX(CASE WHEN class_lesson = 'class7history' THEN attendants ELSE 0 END) AS class7history
from
(select
group_concat(distinct class, lesson) as class_lesson,
count(*) as attendants
from
TableName
group by class , lesson
) a
Вот SQLFiddle с образцами данных. Возможно ли это без использования хранимых процедур?
Ой, я только что видел, что здесь: http://stackoverflow.com/tags/pivot/info – Lmwangi
Я не мог понять, почему этот ответ был выбран, поскольку он дает именно то, что @Lmwangi говорит, что это не решение. – j4x