Ако имате фиксиран брой езикови идентификатори, можете да направите това като:
select id,
max(case when LanguageId = 1 then text end) as "1",
max(case when LanguageId = 2 then text end) as "2",
max(case when LanguageId = 3 then text end) as "3"
from t
group by id;
Ако не знаете идентификаторите на езика предварително, тогава трябва да използвате динамичен SQL, за да конструирате заявката и след това да я подготвите и изпълните.
Ако languageid е динамичен:
select @s = concat('select id',
group_concat(concat(', max(case when LanguageId = ',
LanguageId,
' then text end) as "',
LanguageId, '"'
)
),
' from t group by id'
)
from (select distinct LanguageId from t) t;
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;