我在Postgres中有一张表,包含三列:一列组名、一列日期和最后一列值。
我想创建一个视图,其中包含一个日期序列,并显示每个日期对应的最近的组的值。
grp | mydate | value |
---|---|---|
A | 2021-01-27 | 5 |
A | 2021-01-23 | 10 |
A | 2021-01-15 | 15 |
B | 2021-01-26 | 7 |
B | 2021-01-24 | 12 |
B | 2021-01-15 | 17 |
组 | 日期 | 数值 |
---|---|---|
A | 2021-01-27 | 5 |
A | 2021-01-26 | 10 |
A | 2021-01-25 | 10 |
A | 2021-01-24 | 10 |
A | 2021-01-23 | 10 |
A | 2021-01-22 | 15 |
A | 2021-01-21 | 15 |
A | 2021-01-20 | 15 |
A | 2021-01-19 | 15 |
A | 2021-01-18 | 15 |
A | 2021-01-17 | 15 |
A | 2021-01-16 | 15 |
A | 2021-01-15 | 15 |
B | 2021-01-27 | 7 |
B | 2021-01-26 | 7 |
B | 2021-01-25 | 12 |
B | 2021-01-24 | 12 |
B | 2021-01-23 | 17 |
B | 2021-01-22 | 17 |
B | 2021-01-21 | 17 |
B | 2021-01-20 | 17 |
B | 2021-01-19 | 17 |
B | 2021-01-18 | 17 |
B | 2021-01-17 | 17 |
B | 2021-01-16 | 17 |
B | 2021-01-15 | 17 |
生成表的SQL代码:
CREATE TABLE foo (
grp char(1),
mydate date,
value integer);
INSERT INTO foo VALUES
('A', '2021-01-27', 5),
('A', '2021-01-23', 10),
('A', '2021-01-15', 15),
('B', '2021-01-26', 7),
('B', '2021-01-24', 12),
('B', '2021-01-15', 17)
目前我已经成功生成了一个将日期序列与不同组合并的可视化图表,但我无法获取最近的值。
SELECT DISTINCT(foo.grp), (date_trunc('day'::text, dd.dd))::date AS mydate
FROM foo, generate_series((( SELECT min(foo.mydate) AS min
FROM foo))::timestamp without time zone, (now())::timestamp without time zone, '1 day'::interval) dd(dd)