【发布时间】:2014-01-03 20:14:09
【问题描述】:
我有一个列集(假设 A 列和 B 列)。 每列可以有多个点(日期时间和值)。 每个列集都有预定义的时间步长。下面的例子是:600 秒。
A 栏
dateTime - '2013-10-05 00:10:00'
Value - 0.51231
dateTime - '2013-10-05 00:20:00'
Value - 0.54123
dateTime - '2013-10-05 00:30:00'
Value - 0.53312
...
dateTime - '2013-11-14 13:30:00'
Value - 0.53312
etc.
B 列
dateTime - '2013-10-05 00:10:00'
Value - 0.51231
dateTime - '2013-10-05 00:20:00'
Value - 0.54123
dateTime - '2013-10-05 00:50:00'
Value - 0.54123
...
dateTime - '2013-11-14 13:20:00'
Value - 0.53312
dateTime - '2013-11-14 13:30:00'
Value - 0.53312
dateTime - '2013-11-14 13:40:00'
Value - 0.53312
我需要为每列查找缺失的数据点并插入 NULL 点,以便所有列都有准确的点数。
对于上述示例,缺少的数据点是:
columnA - 2013-11-14 13:40:00
columnB - 2013-10-05 00:30:00, 2013-10-05 00:40:00
我知道我可以对给定列集的每一列使用 T-SQL 或 PHP(客户端)进行迭代并检查每个点,但我认为这会很慢。尤其是 PHP 解决方案。
可能有智能 SQL 能够选择缺失的日期时间(间隔)。
有什么想法吗?
更新: 因为不清楚数据库结构。 列是表中的一个字段,所以,让我们有一个表:tblValues。 有 3 个字段:columnName、datetime 和 value。 在我们的示例中,columnName 是 columnA 或 columnB。
【问题讨论】:
-
不清楚您的表格在这里是什么样子。 “columnA”是一个有两列的表吗?你能发布你的 CREATE TABLE 语句吗?
-
我在最后更新了问题。
-
你怎么知道缺少一个值?
-
我的逻辑是没有值就没有数据点。然而,数据库结构需要有 NULL 数据点,这是没有数据点的信息。这样的记录必须存在,因为数据对齐......基本上由于一些限制我无法改变它。
标签: sql-server datetime