在 PostgreSQL 查询中使用 generate_series
Using generate_series in PostgreSQL query
我有一个 table 的数据,我想用 PostgreSQL 填补 generate_series 的日期空白,但我无法解决它。如何将我的 table 加入到 generate_series 结果中?我的尝试如下:
SELECT series AS time,
data
FROM generate_series('2012-11-11', '2012-11-12', '2 minutes'::interval) AS series
LEFT JOIN data_table ON data_table.time = series
在此日期范围内,结果是:
TIME DATA
2012.11.11. 13:00:06 | data 1
2012.11.11. 13:08:06 | data 2
我的目标是这样的:
TIME DATA
2012.11.11. 13:00:06 | data 1
2012.11.11. 13:02:06 | NULL
2012.11.11. 13:06:06 | NULL
2012.11.11. 13:08:06 | data 2
2012.11.11. 13:10:06 | NULL
2012.11.11. 13:12:06 | NULL
...
因此整个 table 以 2 分钟间隔填充时间行。我怎样才能做到这一点?
我认为您的查询应该有效。我会给这个值一个列名:
SELECT g.series AS time, t.data
FROM generate_series('2012-11-11', '2012-11-12', '2 minutes'::interval) AS g(series) LEFT JOIN
data_table t
ON t.time = g.series;
我有一个 table 的数据,我想用 PostgreSQL 填补 generate_series 的日期空白,但我无法解决它。如何将我的 table 加入到 generate_series 结果中?我的尝试如下:
SELECT series AS time,
data
FROM generate_series('2012-11-11', '2012-11-12', '2 minutes'::interval) AS series
LEFT JOIN data_table ON data_table.time = series
在此日期范围内,结果是:
TIME DATA
2012.11.11. 13:00:06 | data 1
2012.11.11. 13:08:06 | data 2
我的目标是这样的:
TIME DATA
2012.11.11. 13:00:06 | data 1
2012.11.11. 13:02:06 | NULL
2012.11.11. 13:06:06 | NULL
2012.11.11. 13:08:06 | data 2
2012.11.11. 13:10:06 | NULL
2012.11.11. 13:12:06 | NULL
...
因此整个 table 以 2 分钟间隔填充时间行。我怎样才能做到这一点?
我认为您的查询应该有效。我会给这个值一个列名:
SELECT g.series AS time, t.data
FROM generate_series('2012-11-11', '2012-11-12', '2 minutes'::interval) AS g(series) LEFT JOIN
data_table t
ON t.time = g.series;