【发布时间】:2020-09-24 23:58:46
【问题描述】:
输入:
postgres=> select player_1, row_number() over (order by id) as r1, row_number() over (order by id desc) as r2 from (select id, player_1 from matches order by id limit 5) as foo;
player_1 | r1 | r2
--------------------+----+----
Kafelnikov Yevgeny | 1 | 5
Dreekmann Hendrik | 2 | 4
Courier Jim | 3 | 3
Krajicek Richard | 4 | 2
Rafter Patrick | 5 | 1
(5 rows)
预期:
first | last
--------------------+----+----
Kafelnikov Yevgeny | Rafter Patrick
我尝试了以下方法,但它有 5 行,我需要它们都放在一行上,就像上面一样。
postgres=> select case when r1 = 1 then player_1 end, case when r2 = 1 then player_1 end from (select player_1, row_number() over (order by id) as r1, row_number() over (order by id desc) as r2 from (select id, player_1 from matches order by id limit 5) as foo) as too;
case | case
--------------------+----------------
Kafelnikov Yevgeny |
|
|
|
| Rafter Patrick
(5 rows)
【问题讨论】:
标签: sql postgresql pivot window-functions