具有动态列名称的MYSQL数据透视表

时间:2020-03-18 08:08:35

标签: mysql pivot

MYSQL下面查询动态列名称的问题。注意,当T_Date列值是字母,并且似乎仅在日期值时才发生此问题。

任何想法,是什么使它无法与日期值一起运行?我感觉我需要在返回时转换为字符串,但是不确定,因为我不是DB专家。

enter image description here

另附表截图以供参考:

复制SQL Fiddler链接以进行快速验证http://sqlfiddle.com/#!9/43f654/1

enter image description here

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'sum(case when T_Date= ''',
      T_Date,
      ''' then T_W_Hours else 0 end) AS ',
      T_Date
    )
  ) INTO @sql
FROM timesheet;


SET @sql = CONCAT('SELECT T_empid, ', @sql, ', sum(T_W_Hours) as `count`
                  FROM timesheet
                  GROUP BY T_empid');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

1

0 个答案:

没有答案