返回具有特定关联值变化的帐户的所有历史记录

时间:2018-03-09 20:51:05

标签: sql postgresql

我正在尝试为每个帐户选择时间变量帐户表中的所有记录,并更改相关值(例如到期日期)。值的更改将导致最新帐户的最新记录以及创建的新记录(包含第二天的新生效日期)。此表中帐户的最新记录的结束日期为12/31/9000。

例如,在下图中,帐户44444444不会包含在我的查询结果集中,因为它没有更改值(因此除原始文件外没有其他记录);但是,其他帐户的值(和多个记录)有多处更改,所以我希望看到返回的那些。

此外,该表还包含下面未包含的许多其他字段(列),但这些字段的值的更改可以触发正在创建的新记录;但是,我只想检索那些“值”列中的数字已更改的帐户的所有记录。有什么方法可以获得我需要的结果?

Capture

注意:此表的主键包括acct_id和eff_dt,我在Greenplum环境中使用PostgreSQL。

以下是我尝试使用的两种类型的查询但产生了有问题的结果:

Query 1 Query 2

1 个答案:

答案 0 :(得分:0)

我认为您希望窗口函数比较值:

select t.*
from (select t.*,
             min(t.value) over (partition by t.acct_id) as min_value,
             max(t.value) over (partition by t.acct_id) as max_value
      from t
     ) t
where min_value <> max_value;