首页 > 解决方案 > 将值转换为列 SQL

问题描述

我正在使用以下 SQL 查询:

SELECT package_stats.developer, xf_user.username, xf_user.email, xf_user_profile.homepage, xf_user_profile.location, xf_user_profile.about, xf_user_field_value.field_id, xf_user_field_value.field_value 
FROM package_stats, xf_user, xf_user_field_value, xf_user_profile 
WHERE xf_user.username = package_stats.developer AND xf_user_field_value.user_id = xf_user.user_id AND xf_user_profile.user_id = xf_user.user_id

这会产生这样的结果:

在此处输入图像描述

我的问题是使用 SQL 查询是否可以将不同的field_id值放入列中,以便我只有一行。

标签: mysqlsql

解决方案


您可以使用案例

SELECT 
    CASE WHEN xf_user_field_value.field_id = 'Github' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header Github',
    CASE WHEN xf_user_field_value.field_id = 'Repository' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header Repository',
    CASE WHEN xf_user_field_value.field_id = 'UserRole' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header UserRole',
    CASE WHEN xf_user_field_value.field_id = 'aim' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header aim',
    CASE WHEN xf_user_field_value.field_id = 'twitter' THEN xf_user_field_value.field_id ELSE '' end) as 'Col Header twitter', 
/*other_col_name...*/

推荐阅读