1

我需要从表格中的数据生成图表。此表有以下日期:

Timestamp | Value
01-20-2013| 5
01-21-2013| 7
01-22-2013| 3
01-25-2013| 5

如您所见,并非每个日期都有价值。如果我把它放在图表中,它看起来很奇怪。日期用于 X 轴。由于缺少 01-23-2013 和 01-24-2013,这些值要么没有打印在图表中(看起来很奇怪),要么打印出来,图表的行从 3 直接变为 5,而不是应该变为 0 .

有没有办法通过 SQL 来选择数据,使其看起来像这样:

Timestamp | Value
01-20-2013| 5
01-21-2013| 7
01-22-2013| 3
01-23-2013| 0
01-24-2013| 0
01-25-2013| 5

任何帮助表示赞赏!

问候,亚历克斯

编辑:我不知道数据库引擎有那么重要。这是在 MySQL 5 数据库上运行的(不确定完整的版本字符串)。

4

1 回答 1

2

有多种方法可以做到这一点,具体取决于数据库。众所周知,日期函数是独立于数据库的。

这是一种使用包含所有日期的“驱动程序”表并将其用于左外连接的方法:

select driver.timestamp, coalesce(t.value, 0) as value
from (select distinct timestamp + n.n as timestamp
      from t cross join
           (select 0 as n union all select 1 union all select 2 union all select 3
           )
     ) driver left outer join
     t;

此版本假定间隔不超过三天。

在某些数据库中,您可以使用递归 CTE 构造日期列表。这种方法可以处理任何大小的间隙。

于 2013-08-19T13:02:31.043 回答