重新排列表中值的位置

时间:2016-02-02 02:11:20

标签: mysql date

我正在使用MYSQL。我有一个表格,其中包含计划的开始日期和结束日期。

    |      StartDate         |    FinishDate      |
    |Feb 1, 2016 11:50 AM    |Feb 2, 2016 3:37 PM |
    |Feb 2, 2016 4:29 PM     |Feb 3, 2016 8:16 PM |
    |Feb 3, 2016 8:17 PM     |Feb 3, 2016 8:34 PM |

我希望做的是获取没有计划条目的日期。 我想到的最简单的方法是生成一个新表,其中FinishDate和StartDate中的值将以此格式重新排列(第一行中的FinishDate值,第二列中的值将是第一行中的值,第一列,而while第二行中的StartDate值,第一列将被传输到第一行,第二列,等等):

期望的输出 没有分配:

    |      StartDate         |    FinishDate      |
    |Feb 2, 2016 3:37 PM     |Feb 2, 2016 4:29 PM |
    |Feb 3, 2016 8:16 PM     |Feb 3, 2016 8:17 PM |
    |Feb 3, 2016 8:34 PM     |  -                 |

如何实现所需的输出?非常感谢你提前。

1 个答案:

答案 0 :(得分:0)

MySql没有窗口函数,因此生成这种结果总是很棘手。一种可能性是:

SELECT
  t1.FinishDate StartDate
, MIN(t2.StartDate) FinishDate

FROM table t1
LEFT JOIN table t2 ON t2.StartDate > t1.FinishDate
GROUP BY 1

如果对日期列编制索引并且要处理的行数相对较少,这将很有效。