按id分组在postgres sql上的时间更短

按id分组在postgres sql上的时间更短,sql,postgresql,Sql,Postgresql,我在postgres db有一个结构表: id | item | name | time 1 | A | Shoes | 01 1 | B | Hat | 02 2 | C | Shirt | 01 2 | D | Glove | 02 我需要将此表转换为: prev_item | item | name A | B | Hat C | D | Glove 它基于时间,对于每个id,时间越短,应为prev\u项

我在postgres db有一个结构表:

id | item | name  | time
1  | A    | Shoes | 01
1  | B    | Hat   | 02
2  | C    | Shirt | 01
2  | D    | Glove | 02
我需要将此表转换为:

prev_item | item | name
A         | B    | Hat
C         | D    | Glove
它基于时间,对于每个id,时间越短,应为
prev\u项

你是怎么做到的


thx

使用
行数
滞后
窗口功能

select * from
(
select row_number()over(partition by id order by time desc) Rn,
       lag(item) over(partition by id order by time) prev_item,*
from yourtable
) A
Where Rn = 1

hai@MotoGP,它不起作用……我的意思是……我需要显示
prev_item
@ihsansat:
lag()
是一个窗口函数:有关更多详细信息,请参阅Postgres教程和手册: