MySQL pivot表创建带有开始、结束时间的活动日志文件

MySQL pivot表创建带有开始、结束时间的活动日志文件,mysql,Mysql,我是MySQL新手 我有一套这样的数据 Tester datetime_start Event Lot_Num Tester#1 20/9/2016 13:21 Down Tester#1 20/9/2016 13:26 LoadTP Lot_A Tester#1 20/9/2016 13:38 LotStart Lot_A Tester#1 20/9/

我是MySQL新手

我有一套这样的数据

     Tester     datetime_start      Event       Lot_Num
     Tester#1   20/9/2016 13:21     Down    
     Tester#1   20/9/2016 13:26     LoadTP      Lot_A
     Tester#1   20/9/2016 13:38     LotStart    Lot_A
     Tester#1   20/9/2016 16:19     LotEnd      Lot_A
     Tester#1   20/9/2016 16:19     Idle    
     Tester#1   20/9/2016 16:20     Down    
     Tester#1   20/9/2016 16:23     LoadTP      Lot_B
     Tester#1   20/9/2016 16:35     LotStart    Lot_B
     Tester#1   20/9/2016 17:12     Down        Lot_B
     Tester#1   20/9/2016 17:36     LotEnd      Lot_B
我需要帮助使上面的数据看起来像这样:

    Tester      Lot_Num Time_Start      Time_End
    Tester#1    Lot_A   20/9/2016 13:26     20/9/2016 16:19
    Tester#1    Lot_B   20/9/2016 16:23     20/9/2016 17:36
我不知道怎么做,我试着做这样的事情

    SELECT  Tester,Lot_Num,Event,
        (case when Event ='LoadTP' then datetime_start end)as Time_Start,
        (case when Event ='LotEnd' then datetime_start end)as Time_End

    from T_Utilization
                        Time_Start      Time_End
    Tester#1    Lot_A   20/9/2016 13:26 
    Tester#1    Lot_A                   20/9/2016 16:19
    Tester#1    Lot_B   20/9/2016 16:23 
    Tester#1    Lot_B                   20/9/2016 17:36
但是现在我的桌子看起来像这样

    SELECT  Tester,Lot_Num,Event,
        (case when Event ='LoadTP' then datetime_start end)as Time_Start,
        (case when Event ='LotEnd' then datetime_start end)as Time_End

    from T_Utilization
                        Time_Start      Time_End
    Tester#1    Lot_A   20/9/2016 13:26 
    Tester#1    Lot_A                   20/9/2016 16:19
    Tester#1    Lot_B   20/9/2016 16:23 
    Tester#1    Lot_B                   20/9/2016 17:36
需要Mysql方面的帮助。

您可以使用条件聚合来实现此目的:

SELECT Tester, LotNum, 
       MAX(CASE WHEN Event ='LoadTP' THEN datetime_start END) AS Time_Start,
       MAX(CASE WHEN Event ='LotEnd' THEN datetime_start END) AS Time_End
FROM T_Utilization
WHERE LotNum IS NOT NULL
GROUP BY Tester, LotNum

您可以为此使用条件聚合:

SELECT Tester, LotNum, 
       MAX(CASE WHEN Event ='LoadTP' THEN datetime_start END) AS Time_Start,
       MAX(CASE WHEN Event ='LotEnd' THEN datetime_start END) AS Time_End
FROM T_Utilization
WHERE LotNum IS NOT NULL
GROUP BY Tester, LotNum

谢谢。解决方案很简单!如果我错了,请纠正我。是“Max”(条件聚合)强制Mysql选择指定的一个结果吗?@Benjaminley是的,它选择具有
Event='LoadTP'/'LotEnd'
的结果。谢谢。解决方案很简单!如果我错了,请纠正我。是“Max”(条件聚合)强制Mysql选择指定的一个结果吗?@benjaminley是的,它选择具有
Event='LoadTP'/'LotEnd'
的结果。