我有一個保存活動記錄的表格,其中包含注冊日期和有關所執行活動的其他資訊。我想做一個查詢,該查詢將在表中回傳一列,其中包含最大記錄日期。
我不認為它太復雜,但我的知識是有限的主題。表之間的連接會是解決方案嗎?我該怎么做?
我原來的表:
| ID | 價值 | 日期 |
|---|---|---|
| 01 | 34 | 2022-02-15 |
| 01 | 42 | 2022-02-08 |
| 02 | 12 | 2022-02-08 |
| 02 | 30 | 2022-02-01 |
我需要得到:
| ID | 價值 | 日期 | 日期_最大值 |
|---|---|---|---|
| 01 | 34 | 2022-02-15 | 2022-02-15 |
| 01 | 42 | 2022-02-08 | 2022-02-15 |
| 02 | 12 | 2022-02-08 | 2022-02-15 |
| 02 | 30 | 2022-02-01 | 2022-02-15 |
我只需要一個具有全域最大值的列。所有行的值都相同。
uj5u.com熱心網友回復:
您可以使用視窗函式:
select id, value, date, max(date) over () as date_max
from the_table
order by id, date desc;
uj5u.com熱心網友回復:
很多方法可以做到這一點:
- 分析功能(如果您可以使用)。
- 行內選擇查詢
- 交叉連接
. 第一個兩個已經包含在答案中,所以這里是第三個選項。分析將是我能想到的最“現代”的處理方式。
SELECT A.*, B.Date_Max
FROM Table A
CROSS JOIN (SELECT max(Date) Date_Max FROM Table Sub) B
uj5u.com熱心網友回復:
另一種方法:使用子查詢獲取最大日期:
select id, value, date, (select max(date) from original_table) Date_max
from original_table o
order by id
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/431100.html
標籤:sql PostgreSQL
