Транспонирование данных из нескольких строк в одну строку из нескольких столбцов с использованием DYNAMI C MYSQL PIVOT - PullRequest
1 голос
/ 19 марта 2020

Этот вопрос отличается от того, что искали тем, что он выбирает из нескольких столбцов перед созданием сводной таблицы. У меня есть структура таблицы, подобная этой

CREATE TABLE score (
id int,
reg_id varchar(5),
test1 int(5),
exam int(5),
subject int(5),
term VARCHAR(5)
)


CREATE TABLE subject (
    id int,
    subject_name varchar(5)
    )

Я хочу иметь возможность выберите более одного значения, например, test1 и исследуйте в другом столбце в DYNAMI C MYSQL PIVOT TABLE Я видел похожий пример, такой как MySQL сводная строка в динамических c количество столбцов , MySQL запрос сводной таблицы с динамическими c столбцами , но, похоже, они выбирают только 1 совпадающее значение в сводной таблице динамических c. Я пытался написать что-то вроде этого

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;

, но это не работает, спасибо

Я хочу вывод, похожий на этот после транспонирования.

regid-------maths test----maths exam-----english test------english exam
3m ---------    10    -----   23     ----     12         ------- 59        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...