我在 Postgres 中有一個查詢。它運行良好,并且準確地回傳了我正在尋找的行。
這是查詢:
select distinct on (status) id, status, timestamp
from my_table
where id = 1
order by status, timestamp
limit 500
這是它回傳的內容:
| ID | 地位 | 時間戳 |
|---|---|---|
| 1 | 開始 | 2022-01-15 05:12:36 |
| 1 | 暫停 | 2022-04-14 09:12:50 |
| 1 | 被殺 | 2022-04-27 13:12:48 |
如何旋轉此表以準確回傳此表:
| ID | 開始 | 暫停 | 被殺 |
|---|---|---|---|
| 1 | 2022-01-15 05:12:36 | 2022-04-14 09:12:50 | 2022-04-27 13:12:48 |
uj5u.com熱心網友回復:
您可以使用擴展tablefunc,但它看起來像一個使用過濾器的簡單聚合已經有效:
SELECT id
, MIN(timestamp) FILTER (WHERE status = 'started') AS started
, MIN(timestamp) FILTER (WHERE status = 'paused') AS paused
, MIN(timestamp) FILTER (WHERE status = 'killed') AS killed
FROM my_table
WHERE id = 1
GROUP BY id;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/498461.html
標籤:sql PostgreSQL 交叉表
