考虑以下数据上该特定列的变化:检测的历史记录表
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
表,我保持一定的表中的所有变化。 现在我需要获取data
的每个当前条目在col1
列中的最后更改的日期。 在这种情况下所需的输出应该是
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'上的变化感兴趣。 –