【问题标题】:adding +1 day to the next date on a join on an incomplete sequence of dates在不完整的日期序列上加入下一个日期 +1 天
【发布时间】:2014-12-21 02:51:00
【问题描述】:

我有一个表,其中存储了一年内不完整的序列日期:

eg.
Jan 1
Jan 4
Jan 9
Jan 24
Jan 25
Feb 16
Feb 18
Feb 21
Feb 28
Mar 3
.
.
.
Dec 31

我需要在日期列的表格上进行自联接。日期需要加入日期 a ,其中日期 b 是序列中的 + 1 天。如果日期完整,我会做一个连接,例如 a.date = b.date,而不是 a.date = DATE_ADD(b.date,INTERVAL 1 DAY)。但我需要它是这样的a.date = NEXT_DATE_IN_SEQUENCE(b.date),当然这不是一个真正的功能,但我正在寻找这样的东西。

【问题讨论】:

  • 制造行号...
  • 您能否在几行中指出您希望在第二列中看到的日期?

标签: mysql sql


【解决方案1】:

您可以使用半笛卡尔积:

SELECT a.date, MIN(b.date)
FROM dates a
INNER JOIN dates b ON b.date > a.date
GROUP BY a.date;

Demo

【讨论】:

    【解决方案2】:

    我会使用相关子查询来解决这个问题:

    select t.*,
           (select t2.date
            from table t2
            where t2.date > t.date
            order by t2.date
            limit 1
           ) as next_date
    from table t;
    

    【讨论】:

      猜你喜欢
      • 2020-01-12
      • 2012-12-11
      • 1970-01-01
      • 2016-08-09
      • 2021-06-21
      • 1970-01-01
      • 2013-07-31
      • 2018-03-21
      • 2021-09-18
      相关资源
      最近更新 更多