Транспонировать дублированные строки в столбцы в MySQL - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть 2 таблицы, студент таблица, содержащая regNo и имя столбцы; и reg_subject таблица, которая содержит список предметов, зарегистрированных индивидуально студентами. Студент может зарегистрировать более одного предмета.

Я хочу создать таблицу, которая объединит две таблицы так, чтобы таблица reg_subject была транспонирована таким образом, чтобы строки превратились в столбцы. Обе таблицы, а также таблица результатов приведены ниже.

стол ученический

| regNo | name  |
_________________
| 1001  | Saleh |
-----------------
| 1002  | Moses |
-----------------
| 1003  | Hafsa |

таблица reg_subject

| regNo | subject  |
____________________
| 1001  | English  |
--------------------
| 1001  | Math     |
--------------------
| 1002  | English  |
--------------------
| 1003  | Math     |
--------------------
| 1002  | Math     |
--------------------
| 1003  | Physics  |
--------------------
| 1001  | Physics  |
--------------------
| 1002  | Physics  |
--------------------

транспонированная таблица соединений должна выглядеть так:

The transposed joint table

| regNo | name  | subject1 | subject2 | subject3 |
__________________________________________________
| 1001  | Saleh | English  | Math     | Physics  |
--------------------------------------------------
| 1002  | Moses | English  | Math     | Physics  |
--------------------------------------------------
| 1003  | Hafsa |          | Math     | Physics  |
--------------------------------------------------

1 Ответ

0 голосов
/ 03 сентября 2018
 SELECT regNo, name,               
        MAX( CASE WHEN subject = 'English'
                  THEN subject
             END) as subject1,
        MAX( CASE WHEN subject = 'Math'
                  THEN subject
             END) as subject2,
        MAX( CASE WHEN subject = 'Physics'
                  THEN subject
             END) as subject3
FROM YourTable
GROUP BY regNo, name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...