| From: | Victor Yegorov <vyegorov(at)gmail(dot)com> |
|---|---|
| To: | Tim Smith <randomdev4+postgres(at)gmail(dot)com> |
| Cc: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: Retrieving value of column X days later |
| Date: | 2016-08-07 20:41:09 |
| Message-ID: | CAGnEbohe0yORUNEis-D47eC4k0w4hnJNydsGpTjFkiKuWd=9rQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
2016-08-07 22:23 GMT+03:00 Tim Smith <randomdev4+postgres(at)gmail(dot)com>:
> create table test (
> when date,
> foo numeric,
> bar numeric,
> alice numeric,
> bob numeric);
>
> insert into test values ('2016-01-01',1,2,3,4);
> insert into test values ('2016-01-02',5,6,7,8);
> insert into test values ('2016-01-03',9,10,11,12);
> insert into test values ('2016-01-04',13,14,15,16);
> insert into test values ('2016-01-05',17,18,19,20);
>
I had to rename column "when" into "when_d", as I do not like quoting
identifiers.
Try this query with window functions:
SELECT *,lead(foo,4) OVER (ORDER BY when_d),
last_value(foo) OVER (ORDER BY when_d RANGE BETWEEN UNBOUNDED
PRECEDING AND UNBOUNDED FOLLOWING)
FROM test;
This will give you the ability to lookup needed values.
You'll have to use subquery though, as window functions are evaluated after
the `WHERE` clause.
--
Victor Y. Yegorov
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tim Smith | 2016-08-07 21:38:05 | Re: Retrieving value of column X days later |
| Previous Message | Sándor Daku | 2016-08-07 20:05:48 | Re: Retrieving value of column X days later |