如果我在MySQL数据库中有这些数据:
PID LANG TRANS
1 EN Apple
1 DE Apfle
我想在sql中获得结果:
PID EN_TRANSLATION DE_TRANSLATION
1 Apple Apfle
怎么做?我已经有表格和所有内容,但需要帮助编写查询,这将为每个产品的每个结果提供每种语言的列。
注意:我不知道语言集合!它可以是EN,DE或其他任何东西......
THX!
答案 0 :(得分:2)
如果您知道LANG
集,则可以使用以下技术生成数据透视图
select
PID,
max(case when LANG = 'EN' then TRANS end) as EN_TRANSLATION,
max(case when LANG = 'DE' then TRANS end) as DE_TRANSLATION
from table_bame
group by PID
如果LANG
值未知,则需要使用动态sql作为
set @sql = null;
select
group_concat(distinct
concat(
'max(case when LANG = ''',
LANG,
''' then TRANS end) AS ',
concat(LANG,'_TRANSLATION')
)
) into @sql
from table_name ;
set @sql = concat('select PID, ', @sql, ' from table_name
group by PID
');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;