我也有同样的问题(MySQL或PHP将行转换为列)[Mysql MySQL or PHP Transform rows to two columns dynamically。但是标题栏格式不同。
我的数据库表
我已经完成了this问题,以下是我的查询版本:
SELECT GROUP_CONCAT(
'MAX(IF(day(tanggal) = ',
day(tanggal),
', presensi, NULL)) AS `',
tanggal,
'`, '
order by tanggal
) INTO @sql
FROM tableName;
运行查询时,它显示通知“ 查询已执行,影响了1行。 ”,但结果为空,这是表应为的样子>
答案 0 :(得分:1)
创建您的静态查询:
select id_pegawai,
max(if(tanggal="2019-06-13", presensi, null)) as "2019-06-13",
max(if(tanggal="2019-06-14", presensi, null)) as "2019-06-14"
from yourtable
group by id_pegawai;
创建动态查询:
SET @sql = NULL;
SELECT
GROUP_CONCAT(
DISTINCT
CONCAT(
'max(if(tanggal="',
tanggal,
'", presensi, null)) as "',
tanggal,
'"'
)
) into @sql
FROM yourtable;
SET @sql = CONCAT('SELECT id_pegawai, ',
@sql, ' FROM yourtable GROUP BY id_pegawai');
执行动态查询:
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
此帖子的灵感来源:http://buysql.com/mysql/14-how-to-automate-pivot-tables.html