Вывод данных в одну строку в порядке важности - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь получить данные из нескольких строк в одну строку в порядке важности.

Я работал с несколькими таблицами и смог собрать все необходимые данные в одну таблицу -поэтому в настоящее время я работаю с одной таблицей, в которой нужные мне данные находятся в нескольких строках.Например, человек может иметь более одной роли.Однако роли имеют порядок важности - я добавил столбец порядка важности в файл, с которым я работаю.

Файл, с которым я работаю, выглядит следующим образом:

ID      | FIRST   |LAST     | ROLE      | ORDER OF IMPORTANCE  
116     | Jamie   | Ansto   | PARAL     | 5  
116     | Jamie   | Ansto   | FMREMP    | 11    
153     | Alan    | Rond    | PAR       | 3  
153     | Alan    | Rond    | PARAL     | 5  
155     | Maureen | Aron    | GP        | 4  
155     | Maureen | Aron    | PARAL     | 5  
38      | William | Dry     | STU       | 8  
175     | Nathan  |Gong     | OTH       | 10  
175     |Nathan   |Gong     | FMRSTU    | 13  
175     |Nathan   | Gon     | FR        | 14  
308     | Bridget | Abad    | PAR       | 3  
308     | Bridget | Abad    | EMP       | 7  
370     | Matt    | Bodie   | BD        | 1  
370     | Matt    | Bodie   | AL        | 2  

Мне нужен файл, в котором все коды, связанные с одним человеком в одной строке, расположены в порядке ихВажность.
Я хочу закончить тем, что выглядит примерно так:

ID      |FIRST   |LAST    |CODE1   |CODE2   |CODE3   |CODE4   
116     |Jamie   |Ansto   |PARAL   |FMREMP  
153    |Alan     |Rond    |PAR     |PARAL  
155    |Maureen |Aron     | GP     | PARAL  
381    |William |Dry      |STU  
175    |Nathan   |Gong    |OTH     |FMRSTU  |FR  
308    | Bridget |Abad    |PAR     |EMP  
370   | Matt     |Bodie   |BD      | AL  

Я пытался использовать Group_Concat, но это не дало мне результаты в нужном мне порядке.Любая помощь будет оценена.

Спасибо,
MG

1 Ответ

0 голосов
/ 27 апреля 2019

Вы можете сделать что-то вроде этого:

SELECT *,GROUP_CONCAT(`ROLE` ORDER BY `ORDER_OF_IMPORTANCE` SEPARATOR ' ' ) 
FROM `table1` GROUP BY `ID`;

Функция SEPARATOR ' ' даст вам результат, подобный этому OTH FMRSTU FR. Если вы удалите его и выполните только GROUP_CONCAT(ROLE ORDER BY ORDER_OF_IMPORTANCE), результат будет выглядеть следующим образом OTH,FMRSTU,FR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...