我试图按重要性顺序将多行中的数据转换为单行。
我正在使用多个表,并且能够将我需要的所有数据提取到一个表中-所以目前我正在使用一个表,其中所需的数据存在于多行中。例如,一个人可以扮演多个角色。但是,角色具有重要性顺序-我在正在使用的文件中添加了重要性顺序列。
我正在使用的文件如下:
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
答案 0 :(得分:0)
您可以执行以下操作:
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
。