想要从这些数据中获取 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 首先和之前更改的日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从网站获取SSRS报告

使用 Apache Pig 从文本文件中获取备用行

在单个查询中获取联系人的详细信息

Struts2--day04

谷歌工作箱 webpack 插件在服务工作者之前首先从缓存中获取

骨干路由器:等待首先获取数据