【发布时间】:2014-12-19 17:34:44
【问题描述】:
我正在编写一个脚本来分析 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
如您所见,并非所有表格都以相同的季度TIMESTAMP 开头。基本上,我所追求的是一个查询,该查询将从 3 个表中最早的 TIMESTAMP 开始,每 15 分钟间隔返回 3 个表中的每一个的 VALUE。对于给出的示例,我想从 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
我希望这是有道理的。任何帮助/指针/指导将不胜感激。
【问题讨论】:
标签: sql sql-server join datetime2