如何显示动态数据行到MySQL或PHP中的数据列?

时间:2019-06-14 20:10:45

标签: php mysql laravel

我也有同样的问题(MySQL或PHP将行转换为列)[Mysql MySQL or PHP Transform rows to two columns dynamically。但是标题栏格式不同。

我的数据库表

enter image description here

我已经完成了this问题,以下是我的查询版本:

SELECT GROUP_CONCAT(
      'MAX(IF(day(tanggal) = ',
      day(tanggal),
      ', presensi, NULL)) AS `',
      tanggal,
      '`, '
    order by tanggal
  ) INTO @sql
  FROM tableName;

运行查询时,它显示通知“ 查询已执行,影响了1行。 ”,但结果为空,这是表应为的样子

enter image description here

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