okom emmanuel Ответов: 1

Транспонирование данных из нескольких строк в одну строку несколько столбцов с помощью 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;


Любая помощь будет оценена по достоинству

1 Ответов