返回相应值变化的帐户的所有历史帐户记录

问题描述 投票:1回答:1

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

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

我已经尝试使用row_num函数,以及自反连接,但由于某种原因我没有得到预期的结果。有什么方法可以获得我需要的结果?

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


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

Query 1 Query 2

sql postgresql
1个回答
0
投票

如果您只想要帐户,请使用聚合:

select acct_id
from t
group by acct_id
having min(value) <> max(value);

根据您的描述,您也可以使用count(*) >

如果您想要原始记录,可以使用窗口函数:

select t.*
from (select t.*, count(*) over (partition by acct_id) as cnt
      from t
     ) t
where cnt > 1;
© www.soinside.com 2019 - 2024. All rights reserved.