【问题标题】:MySQL: Need to Query for missing records from various start datesMySQL:需要从不同的开始日期查询丢失的记录
【发布时间】:2013-12-19 15:35:33
【问题描述】:

我有两个通过 ID 链接的表,一个表有开始日期,而子(链接)表有每周的数据条目。我需要能够在不知道实际日期的情况下查询和确定缺少一周数据的 ID。

Table1
ID INT
START_DATE DATE

Table2
ID INT (foreign Key to Table 1)
TRAN_DATE DATE
VALUE INT

每个 INT 可能有不同的开始日期,并且每周保存值(每个星期一、星期二等...基于开始日期)

有些 ID 会在一周内错过发布他们的价值,我需要回顾历史记录何时丢失。

假设 Start_Date 为 2013 年 9 月 9 日,则日期为(2013 年 9 月 9 日。2013 年 9 月 16 日,2013 年 9 月 23 日,...)我需要查看 ID 1 的 TRAN_DATE 是否为 9 /9/2013,然后添加 7 天 (9/16/2013),并检查该记录,然后添加 7 天 (9/23/2013) 并检查该记录是否存在。然后重复不同的 ID。这将以当前日期或未来的任何日期结束(如果这更容易的话)。

我可以很简单地用一个程序来做这件事,但是我需要在客户站点上做这件事,我不能将代码分发到网站上,所以我需要尝试用查询来做。

【问题讨论】:

  • 我假设你的意思是它需要重复到现在?
  • @ExplosionPills 是的,继续到当前日期,相差 7 天。

标签: mysql date


【解决方案1】:

以下查询返回 table2 中的任何间隙:

select distinct id
from table2 t2
where t2.tran_date < now() - interval 7 day and
      not exists (select 1
                  from table2 t2a
                  where t2a.id = t2.id and
                        datediff(t2a.tran_date, t2.tran_date) = 7
                 );

这假设第一笔交易没有丢失。这可能吗?

【讨论】:

  • 在我的情况下,不应缺少第一个日期,因为创建了初始记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2014-06-25
  • 2010-09-21
相关资源
最近更新 更多