Mysql 动态行转列问题

查询结果:图片说明
错误结果:图片说明
想要结果:图片说明

查询语句:
set group_concat_max_len=100000;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(IF(''',DATE_FORMAT(p.addtim, '%Y-%m-%d'),''' = ''',
DATE_FORMAT(p.addtim, '%Y-%m-%d'),
''', 1, 0)) AS ''',
DATE_FORMAT(p.addtim, '%Y-%m-%d'), ''''
)
) INTO @sql
From docpatrel p INNER JOIN doctordetail d on d.id = p.docid Where DATE_FORMAT(p.addtim, '%Y-%m-%d') >= '2016-10-01' and DATE_FORMAT(p.addtim, '%Y-%m-%d') <= '2016-10-02' and p.patid!=9999;

SET @sql = CONCAT('Select d.realname, ', @sql,
' From docpatrel p
INNER JOIN doctordetail d on d.id = p.docid
where DATE_FORMAT(p.addtim, ''%Y-%m-%d'') >= ''2016-10-01'' and DATE_FORMAT(p.addtim, ''%Y-%m-%d'') <= ''2016-10-02'' and p.patid!=9999
GROUP BY d.id,d.realname');

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

给你写个例子:
SELECT
t.realname,
SUM(CASE WHEN t.addtim = '2016-10-01' THEN 1 ELSE 0 END) '2016-10-01',
SUM(CASE WHEN t.addtim = '2016-10-02' THEN 1 ELSE 0 END) '2016-10-02'
FROM
table_name t
GROUP BY t.realname