Транспонирование данных из нескольких строк в одну строку несколько столбцов с помощью DYNAMIC MYSQL PIVOT
У меня есть структура таблицы, похожая на эту
CREATE TABLE score ( id int, reg_id varchar(5), test1 int(5), exam int(5), subject int(5), term VARCHAR(5) ) <pre>CREATE TABLE subject ( id int, subject_name(5) )
Я хочу иметь возможность выбрать более одного значения, например test1 и exam, в разных столбцах динамической сводной таблицы MYSQL. Я видел подобное, но они, похоже, выбирают только 1 совпадающее значение в динамической сводной таблице. Я пытался написать что-то вроде этого
Что я уже пробовал:
SELECT GROUP_CONCAT(DISTINCT CONCAT( 'SUM(case when subject = ''', subject, ''' then test1 end)AS `', (select subject_name from subject where id=subject), '`', 'SUM(case when subject = ''', subject, ''' then exam end)AS `', (select subject_name from subject where id=subject), '`' ) ) INTO @sql FROM scores; SET @sql = CONCAT('SELECT reg_id, ', @sql, ' FROM scores where term="First term" GROUP BY reg_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Любая помощь будет оценена по достоинству