Поверните строки таблицы в столбцы без результата

0

Я пытаюсь получить сводную таблицу из временной таблицы (table1) с этими столбцами:

student  percent_correct    exam_id     
student1       100                2
student1        93                3
student1        87                4
student2        93                2
student2        67                3
student2        67                4
student3       100                3

Получить

student exam2 exam3 exam4
student1  100    93    87
student2  93     67    67
student3  -     100     -

Прочитав несколько сообщений здесь, я использовал этот код, и я получаю результат cero, пожалуйста, прочитайте комментарии:

SET @sql_dynamic = (
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(exam_id = ''',
      exam_id,
      ''', percent_correct, 0)) AS exam',
      exam_id
    ))
FROM table1); #  MySQL returned 0 columns
SET @sql = CONCAT('SELECT student, ',@sql_dynamic,' FROM table1'); #  MySQL returned 0 columns

PREPARE stmt FROM @sql; # MySQL returned 0 columns
EXECUTE stmt; #  MySQL returned 1 row
DEALLOCATE PREPARE stmt; # MySQL returned 0 columns

Я не знаю, как получить эту таблицу.

Теги:

1 ответ

0

Использовать условную агрегацию

  select student,
         max(case when exam_id = 2 then percent_correct end) exam2,
         max(case when exam_id = 3 then percent_correct end) exam3,
         max(case when exam_id = 4 then percent_correct end) exam4
  from your_table
  group by student
  • 0
    Привет, спасибо за ответ, есть десятки экзаменов и растут. Это был просто пример. Идея состоит в том, чтобы иметь долгосрочное решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню