【问题标题】:Pivot Table in MySQL not returning correctlyMySQL中的数据透视表未正确返回
【发布时间】:2015-06-29 10:55:03
【问题描述】:

我知道这个问题已经被问过几次了,我正在尝试准确地回答公认的答案,但显然我做错了什么,无法获得所需的输出。

我想返回以下格式的数据:

姓名 | 27-06-2015 | 28-06-2015

===== | ========== | ==========

约翰 |早上 6:30 |上午 7 点 30 分

史蒂夫|早上 6:00 |凌晨 4:00

++++++++++++++++++++++++++++++++++++++++++

但是当我运行Fiddle 查询时,我没有在出勤表中获得第二天的任何数据。如果我删除分组,我会得到第二天的数据,但会在结果集中插入一个新行:

姓名 | 27-06-2015 | 28-06-2015

===== | ========== | ==========

约翰 |早上 6:30 |空

约翰 |空 |上午 7 点 30 分

史蒂夫|早上 6:00 |空

史蒂夫|空 |凌晨 4:00

++++++++++++++++++++++++++++++++++++++

我使用的sql是:

SELECT 
 Name,
 case(dropoffdate) when '20150627' then CONCAT(DropoffTime, ' - ', PickupTime) end as '2015-06-27',
 case (DropoffDate) when '20150628' then CONCAT(DropoffTime, ' - ', PickupTime) end as '2015-06-28'
 FROM
 Student s
 LEFT OUTER JOIN Attendance a on s.id = a.student 
 GROUP BY s.id

这里是fiddle link

【问题讨论】:

    标签: php mysql pivot-table


    【解决方案1】:

    您必须根据需要使用MAXMIN 组函数来获取有效记录。

    SELECT 
           Name,
           MAX( case(dropoffdate) 
                     when '20150627' 
                          then CONCAT(DropoffTime, ' - ', PickupTime) 
                end ) as '2015-06-27',
           MAX( case (DropoffDate) 
                     when '20150628' 
                          then CONCAT(DropoffTime, ' - ', PickupTime) 
                end ) as '2015-06-28'
     FROM Student s
     LEFT OUTER JOIN Attendance a on s.id = a.student 
     GROUP BY s.id
    

    【讨论】:

    • 谢谢,现在可以正常使用了。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多