MySQL поворот таблицы при получении связанных значений - PullRequest
1 голос
/ 16 марта 2020

Я очень новичок в mysql и sql в целом. Ни один из моих результатов поиска не принес искомого решения. У меня есть база данных, и мне нужно отформатировать вывод, как в примере ниже. К сожалению, я больше не могу изменить базу данных, поскольку это старый проект другого сотрудника.

Исходная таблица:

CustomerID serviceID ratingID employeeID
1          1         A        1
1          2         B        5
1          3         B        2
1          4         A        3

2          1         A        1
2          2         C        5
2          3         D        2
2          4         C        3

3          1         T        1
3          2         O        5
3          3         T        2
3          4         O        3    

У каждого клиента есть четыре записи, по одной для каждой услуги. Они установили рейтинги и сотрудников.

Вывод, который мне нужен (employeeID можно игнорировать):

CustomerID ServiceID=1 ServiceID=2 ServiceID=3 ServiceID=4
1          A           B           B           A
2          A           C           D           C
3          T           O           T           O

Я нашел решения с group_concat (if ()) ... в операторе select и группировку по customerID, которая только принес значения «1» в каждом поле, а не связанные значения. Я пытался связать потерянный выбор вместе с объединением или подвыбором, но ни один из них не дал результата, который я ищу. У кого-нибудь есть дружеская помощь новичку?

1 Ответ

0 голосов
/ 16 марта 2020

Для этого примера данных вы можете использовать условное агрегирование:

select CustomerID,
  max(case when serviceID = 1 then ratingID end) `ServiceID=1`,
  max(case when serviceID = 2 then ratingID end) `ServiceID=2`,
  max(case when serviceID = 3 then ratingID end) `ServiceID=3`,
  max(case when serviceID = 4 then ratingID end) `ServiceID=4`
from tablename
group by CustomerID

См. Демоверсию . Результаты:

| CustomerID | ServiceID=1 | ServiceID=2 | ServiceID=3 | ServiceID=4 |
| ---------- | ----------- | ----------- | ----------- | ----------- |
| 1          | A           | B           | B           | A           |
| 2          | A           | C           | D           | C           |
| 3          | T           | O           | T           | O           |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...