【问题标题】:Pivoting in MySQL table在 MySQL 表中旋转
【发布时间】:2014-12-02 04:33:48
【问题描述】:

我有一个名为 switch 的 MySQL 表,如下所示:

switchName  switchCondition switchingTime 
----------- --------------- ------------- 
First       ON              10:00      
First       OFF             11:00
Second      ON              10:30      
Third       OFF             13:00      
Third       ON              13:45  

如何通过根据切换条件旋转切换时间,使用上表将报表显示为以下格式的 html 表格?

switchName   ON     OFF 
----------- -----  -------
First       10:00   11:00                   
Second      10:30    -        
Third       13:45   13:00

【问题讨论】:

  • 是否可以有First 的第三或第四条目?
  • 可能是...@VishalZanzrukia,在这种情况下我猜MAX() 可以使用。

标签: mysql sql select group-by pivot


【解决方案1】:

试试这个:

SELECT s.switchName, 
       MAX(CASE WHEN s.switchCondition = 'ON' THEN s.switchingTime ELSE '-' END) AS SwitchON, 
       MAX(CASE WHEN s.switchCondition = 'OFF' THEN s.switchingTime ELSE '-' END) AS SwitchOFF
FROM switches s 
GROUP BY s.switchName;

【讨论】:

    【解决方案2】:

    另一种方法

    SELECT s.switchName, s1.switchingTime, s2.switchingTime
    FROM switches s
    LEFT JOIN switches s1 ON s.switchName = s1.switchName AND s1.switchCondition = 'ON'
    LEFT JOIN switches s2 ON s.switchName = s2.switchName AND s2.switchCondition = 'OFF'
    GROUP BY s.switchName
    

    (尽管它表示您的破折号为NULL

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多