我有一个包含以下列的表格: Account,Indicator,StartDate,EndDate Indicator经常(随机地)从N更改到Y。当指标更新时,开始日期也会更改,结束日期也会更改。开始日期和结束日期可能会因为此表上其他标志的更改而更改,因此指示器可能尚未更新,但开始日期和结束日期将会更新。
我尝试使用SQL隔离所有帐户记录,因为在帐户的生命周期中,指示器从Y变为N,因为这种情况永远不会发生
感谢您的任何帮助
谢谢
发布于 2016-07-06 21:32:52
我认为你试图做的是在下一个记录之前达到峰值,看看指标是否发生了变化。如果您试图隔离只有指示器更改的情况,则需要扩展比较以包括记录中可能已更改的所有其他属性。如果您的表非常大,对整个表运行此命令可能会消耗大量资源。
因为我没有可以测试的样本数据,所以我提供的SQL就是按照您想要实现的精神编写的。ColA和ColB表示您的主键,或唯一标识表中记录的任何东西。窗口函数用于向前看一行,这样您就可以将当前记录的Indicator值与下一条记录的Indicator值进行比较
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;https://stackoverflow.com/questions/38192286
复制相似问题