按id分组依赖于postgres sql的更少时间

时间:2016-02-29 04:31:40

标签: 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_item

sql如何做到这一点?

THX

1 个答案:

答案 0 :(得分:0)

使用ROW_NUMBER& LAG窗口函数

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