我正在尝试为每个帐户选择时间变量帐户表中的所有记录,并更改相关值(例如到期日期)。值的更改将导致最新帐户的最新记录以及创建的新记录(包含第二天的新生效日期)。此表中帐户的最新记录的结束日期为12/31/9000。
例如,在下图中,帐户44444444不会包含在我的查询结果集中,因为它没有更改值(因此除原始文件外没有其他记录);但是,其他帐户的值(和多个记录)有多处更改,所以我希望看到返回的那些。
此外,该表还包含下面未包含的许多其他字段(列),但这些字段的值的更改可以触发正在创建的新记录;但是,我只想检索那些“值”列中的数字已更改的帐户的所有记录。有什么方法可以获得我需要的结果?
注意:此表的主键包括acct_id和eff_dt,我在Greenplum环境中使用PostgreSQL。
以下是我尝试使用的两种类型的查询但产生了有问题的结果:
答案 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;