首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于将记录与满足条件的更新数据隔离的SQL

用于将记录与满足条件的更新数据隔离的SQL
EN

Stack Overflow用户
提问于 2016-07-05 05:13:48
回答 1查看 72关注 0票数 0

我有一个包含以下列的表格: Account,Indicator,StartDate,EndDate Indicator经常(随机地)从N更改到Y。当指标更新时,开始日期也会更改,结束日期也会更改。开始日期和结束日期可能会因为此表上其他标志的更改而更改,因此指示器可能尚未更新,但开始日期和结束日期将会更新。

我尝试使用SQL隔离所有帐户记录,因为在帐户的生命周期中,指示器从Y变为N,因为这种情况永远不会发生

感谢您的任何帮助

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-07-06 21:32:52

我认为你试图做的是在下一个记录之前达到峰值,看看指标是否发生了变化。如果您试图隔离只有指示器更改的情况,则需要扩展比较以包括记录中可能已更改的所有其他属性。如果您的表非常大,对整个表运行此命令可能会消耗大量资源。

因为我没有可以测试的样本数据,所以我提供的SQL就是按照您想要实现的精神编写的。ColAColB表示您的主键,或唯一标识表中记录的任何东西。窗口函数用于向前看一行,这样您就可以将当前记录的Indicator值与下一条记录的Indicator值进行比较

代码语言:javascript
复制
SELECT ColA
     , ColB
     , Indicator
     , StartDate
     , EndDate
     , MAX(Indicator) OVER (PARTITION BY ColA, ColB 
                            ORDER BY StartDate 
                            ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS NextIndicator
     , MAX(StartDate) OVER (PARTITION BY ColA, ColB 
                            ORDER BY StartDate 
                            ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS NextStartDate
     , MAX(EndDate) OVER (PARTITION BY ColA, ColB 
                            ORDER BY StartDate 
                            ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS NextEndDate
  FROM MyTable
QUALIFY NextIndicator <> Indicator;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38192286

复制
相关文章

相似问题

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