我刚刚为我的应用程序收到了一个新的数据源,它仅在数据发生更改时才将数据插入Derby数据库。通常,缺少数据很好 - 我正在用数据(随时间变化的值)绘制折线图,我只需在两点之间画一条线,在任何给定点推断预期值。问题是,在这种情况下,缺少数据意味着“画一条直线”,如果我这样做,图表将不正确。
有两种方法可以解决这个问题:我可以创建一个以不同方式处理丢失数据的新类(由于 prefuse 的方式,我正在使用的绘图库处理绘图,这可能很困难),或者我可以复制行,保持y值不变,同时更改每行中的x值。我可以在连接数据库和渲染器的 Java 中执行此操作,或者我可以修改 SQL。
我的问题是,给定如下结果集:
+-------+---------------------+
| value | received |
+-------+---------------------+
| 7 | 2000-01-01 08:00:00 |
| 10 | 2000-01-01 08:00:05 |
| 11 | 2000-01-01 08:00:07 |
| 2 | 2000-01-01 08:00:13 |
| 4 | 2000-01-01 08:00:16 |
+-------+---------------------+
假设我在 8:00:20 查询它,如何使用 SQL 使它看起来像下面这样?基本上,我每秒都在复制该行,直到它已经被占用。received
是,出于所有意图和目的,是唯一的(不是,但它是由于WHERE
查询中的子句)。
+-------+---------------------+
| value | received |
+-------+---------------------+
| 7 | 2000-01-01 08:00:00 |
| 7 | 2000-01-01 08:00:01 |
| 7 | 2000-01-01 08:00:02 |
| 7 | 2000-01-01 08:00:03 |
| 7 | 2000-01-01 08:00:04 |
| 10 | 2000-01-01 08:00:05 |
| 10 | 2000-01-01 08:00:06 |
| 11 | 2000-01-01 08:00:07 |
| 11 | 2000-01-01 08:00:08 |
| 11 | 2000-01-01 08:00:09 |
| 11 | 2000-01-01 08:00:10 |
| 11 | 2000-01-01 08:00:11 |
| 11 | 2000-01-01 08:00:12 |
| 2 | 2000-01-01 08:00:13 |
| 2 | 2000-01-01 08:00:14 |
| 2 | 2000-01-01 08:00:15 |
| 4 | 2000-01-01 08:00:16 |
| 4 | 2000-01-01 08:00:17 |
| 4 | 2000-01-01 08:00:18 |
| 4 | 2000-01-01 08:00:19 |
| 4 | 2000-01-01 08:00:20 |
+-------+---------------------+
谢谢你的帮助。