【发布时间】:2022-01-03 12:43:36
【问题描述】:
我在 PostgreSQL 数据库中有一个表,其中包含如下数据:
id customer_id item value timestamp
1 001 price 1000 11/1/2021
2 001 price 1500 11/2/2021
3 001 condition good 11/3/2021
4 002 condition bad 11/4/2021
5 002 condition good 11/5/2021
6 002 price 1000 11/6/2021
7 001 condition good 11/7/2021
8 001 price 1400 11/8/2021
9 002 price 1500 11/9/2021
10 001 condition ok 11/10/2021
11 002 price 1600 11/11/2021
12 002 price 1550 11/12/2021
从这个表中,我想按日期查询最新的值,并将其转换为如下表。
customer_id price condition
001 1400 ok
002 1550 good
为了得到这种表,我尝试使用下面的查询,但是当数据太多时它不能很好地工作。 (像Min和Max对文字和数字的操作)
我在 pgAdmin 4 中对此进行了测试:
SELECT customer_id,
MAX (Case WHEN item='price' THEN value END) price,
MAX (Case WHEN item='condition' THEN value END) condition
FROM table_name GROUP BY customer_id
我想查询最新日期更新数据的值。
【问题讨论】:
标签: sql postgresql greatest-n-per-group