我正在编写一个脚本来分析 SQL Server 2008 数据库上数千个表中包含的一些数据。
为简单起见,可以将表分解为 4-8 个半相关表的组。半相关是指它们是同一项目的数据集合,但它们没有任何实际的 SQL 关系。每个表都包含一个日期时间戳(datetime2
数据类型)、值(可以是bit
、int
或float
取决于特定项目)以及当前不感兴趣的一些其他列。日期时间戳在几秒钟内每 15 分钟(一刻钟)设置一次;然而,并不是所有的数据都被精确地同时记录下来......
例如:
表格1:
TIMESTAMP VALUE
2014-11-27 07:15:00.390 1
2014-11-27 07:30:00.390 0
2014-11-27 07:45:00.373 0
2014-11-27 08:00:00.327 0
表 2:
TIMESTAMP VALUE
2014-11-19 08:00:07.880 0
2014-11-19 08:15:06.867 0.0979999974370003
2014-11-19 08:30:08.593 0.0979999974370003
2014-11-19 08:45:07.397 0.0979999974370003
表3
TIMESTAMP VALUE
2014-11-27 07:15:00.390 0
2014-11-27 07:30:00.390 0
2014-11-27 07:45:00.373 1
2014-11-27 08:00:00.327 1
如您所见,并非所有表格都以相同的 Quarterly 开头TIMESTAMP
。基本上,我所追求的是一个查询,它将每 15 分钟间隔返回 3 个表中的每一个的 VALUE,从 3 个表中最早TIMESTAMP
的一个开始。对于给出的示例,我想从 2014-11-27 07:15 开始(不关心秒数......因此,需要允许时间戳为 +- 1 分钟左右)。当没有特定 TIMESTAMP 的记录时,为该值返回 NULL 是可以的。因此,我列出的示例的查询将返回如下内容:
TIMESTAMP VALUE1 VALUE2 VALUE3
2014-11-27 07:15 1 NULL 0
2014-11-27 07:30 0 NULL 0
2014-11-27 07:45 0 NULL 1
2014-11-27 08:00 0 NULL 1
...
2014-11-19 08:00 0 0 1
2014-11-19 08:15 0 0.0979999974370003 0
2014-11-19 08:30 0 0.0979999974370003 0
2014-11-19 08:45 0 0.0979999974370003 0
我希望这是有道理的。任何帮助/指针/指导将不胜感激。