MissQuite 2016-11-16 02:46 采纳率: 37.5%
浏览 2208
已结题

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;

  • 写回答

1条回答 默认 最新

  • bczzm 2016-11-16 03:02
    关注

    给你写个例子:
    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

    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决