想要从这些数据中获取 AS_code 首先和之前更改的日期
Posted
技术标签:
【中文标题】想要从这些数据中获取 AS_code 首先和之前更改的日期【英文标题】:Want to get dates from this data where AS_code changed first and also before that 【发布时间】:2020-11-12 21:58:55 【问题描述】:在此示例数据中,想要获取 AS_code 将 AS0003 更改为 AS0001 以及 AS0004 更改为 AS0003 的日期(重复也是问题,AS0003 出现两次)。基本上,查询所需的帮助可以返回 AS_code 最初和以前(之前)更改的日期。
不能在查询中使用值,仅依赖于列。我只有一张表,我只需要从中返回这些值。例如。 select eccode, ascode, max(date) from tablex a INNER JOIN tablex y on a.eccode=b.eccode and a.ascodeb.ascode(我试过了)。
EC_Code AS_Cde Effective Date
EC00001 AS0001 9/30/2019
EC00001 AS0001 10/1/2019
EC00001 AS0001 10/2/2019
EC00001 AS0001 10/3/2019
EC00001 AS0001 10/4/2019
EC00001 AS0003 10/19/2019
EC00001 AS0003 10/20/2019
EC00001 AS0003 10/21/2019
EC00001 AS0003 10/22/2019
EC00001 AS0003 10/23/2019
EC00001 AS0003 10/24/2019
EC00001 AS0003 10/25/2019
EC00001 AS0004 12/5/2019
EC00001 AS0004 12/6/2019
EC00001 AS0003 12/7/2019
EC00001 AS0003 12/8/2019
EC00001 AS0003 12/9/2019
EC00001 AS0003 12/10/2019
EC00001 AS0003 12/11/2019
EC00001 AS0003 12/12/2019
EC00001 AS0003 12/13/2019
【问题讨论】:
Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? 您如何确定哪些 AS0003 记录已更改为 AS0001?我认为无法从逻辑上得出这种变化的结论。 如果事情那么紧急,您不应该在短时间内聘请顾问吗?告诉我们它很紧急不会让我们为您提供帮助;如果问题那么严重,您不应该依赖Stack Overflow。 【参考方案1】:你可以使用lag()
:
select *
from (
select t.*, lag(as_code) over(order by effective_date) lag_as_code
from mytable t
) t
where (lag_as_code = 'AS0003' and code = 'AS0001')
or (lag_as_code = 'AS0004' and code = 'AS0003')
基本上这会识别从'AS0003'
到'AS0001'
和从'AS0004'
到'AS0003'
的转换,并在到达新代码时带来行。
【讨论】:
不能在查询中使用值,仅依赖于列。我只有一张表,我只需要从中返回这些值。例如。 select eccode,ascode,max(date) from tablex a INNER JOIN tablex y on a.eccode=b.eccode and a.ascodeb.ascode(我试过这个)以上是关于想要从这些数据中获取 AS_code 首先和之前更改的日期的主要内容,如果未能解决你的问题,请参考以下文章