【发布时间】:2017-08-15 06:37:24
【问题描述】:
考虑以下数据:
history.data
=======================================
id |data_id| col1 | col2 | date
---+-------+-------+-------+-----------
1 |1 | 123 | 321 | 2017-08-01
2 |1 | 124 | 321 | 2017-08-03
3 |2 | 222 | 555 | 2017-08-05
4 |2 | 242 | 555 | 2017-08-07
5 |2 | 242 | 333 | 2017-08-11
所以这是history_data 表,我将所有更改保存在某个表中。
现在我需要在col1 列中获取data 的每个当前条目的最后更改日期。
在这种情况下,所需的输出应该是
data_id | date
--------+-----------
1 | 2017-08-03
2 | 2017-08-07
我需要在以下情况下这样做:
with cte1 as (
select distinct on(data_id)
data_id,
date::date
from data d
join history.data hd on hd.data_id = d.id
order by d.id, hd.date desc
)
如您所见,现在我只获取上次记录更改的日期,而不管更改发生在哪一列。
谁能帮帮我?
【问题讨论】:
-
为什么
data_id=2你期望日期2017-08-07而不是2017-08-11? -
@OtoShavadze 因为在
2017-08-11上发生了更改,在col2上发生了变化,但我只对col1上的更改感兴趣。
标签: sql postgresql postgresql-9.4