首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用筛选器的SQL max和min日期

使用筛选器的SQL max和min日期
EN

Stack Overflow用户
提问于 2018-10-09 18:12:32
回答 2查看 404关注 0票数 0

以下账户于2018年1月19日关闭,然后于2018年2月27日重新开放,然后于2018年3月26日再次关闭。如何编写sql以便在打开和关闭此帐户时捕获。闭包是当帐户关闭时。

我们正在一个数据仓库中工作,每天都会加载数据来捕获所有的历史记录。

对于acct 1234,它应该是这样的:

代码语言:javascript
复制
closed on 1/19/2018
re-opened on 2/27/2018
closed on 3/26/2018

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-09 18:15:08

您可以使用lag()

代码语言:javascript
复制
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;
票数 5
EN

Stack Overflow用户

发布于 2018-10-09 18:27:59

您可以执行两个select语句,第一个带有row_number()分区的acctnbr,按日期排序.保存在tmp表中

第二个select,inner用它本身,t1和t2连接这个表。

其中t1. t1.closerestrictedind = 'C‘

和连接,其中t1.rownum > t2.rownum +1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52727046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档