使用group by 语句作为行转列的数据依据,通过聚合函数 max case when 不同行内容过滤成列显示,例子:
select
s1.data_id,
MAX(CASE WHEN s1.step_id = 'cs1' THEN a1.nick_name END) AS 'cs1_name',
MAX(CASE WHEN s1.step_id = 'vn2' THEN a1.nick_name END) AS 'vn2_name',
MAX(CASE WHEN s1.step_id = 'cs1' THEN s1.create_by END) AS 'cs1_create',
MAX(CASE WHEN s1.step_id = 'vn2' THEN s1.create_by END) AS 'vn2_create'
from bms_master_data_step s1
left join a1 on s1.step_user_id = a1.id