以下账户于2018年1月19日关闭,然后于2018年2月27日重新开放,然后于2018年3月26日再次关闭。如何编写sql以便在打开和关闭此帐户时捕获。闭包是当帐户关闭时。
我们正在一个数据仓库中工作,每天都会加载数据来捕获所有的历史记录。
对于acct 1234,它应该是这样的:
closed on 1/19/2018
re-opened on 2/27/2018
closed on 3/26/2018

谢谢!
发布于 2018-10-09 18:15:08
您可以使用lag()
select acctnbr, effectivedate,
(case when closerestrictedind = 'C' then 'closed' else 'opened' end) as action
from (select t.*, lag(closerestrictedind) over (partition by acctnbr order by effectivedate) as prev_cr
from t
) t
where prev_cr <> closerestrictedind;发布于 2018-10-09 18:27:59
您可以执行两个select语句,第一个带有row_number()分区的acctnbr,按日期排序.保存在tmp表中
第二个select,inner用它本身,t1和t2连接这个表。
其中t1. t1.closerestrictedind = 'C‘
和连接,其中t1.rownum > t2.rownum +1
https://stackoverflow.com/questions/52727046
复制相似问题