SQL进阶技巧:如何取时间序列最新完成状态的前一个状态并将完成状态的过程进行合并?
目录
0 问题描述
1 数据准备
2 问题分析
问题1:取最新完成状态的前一个状态
方法1:分析函数求解
方法2:关联求解
问题2:如何将完成状态的过程合并
方法1:分析函数作为辅助变量
方法2:自关联形式获取全量结果集
3 小结
0 问题描述
表status 字段及内容如下:date_id为连续自增的时间序列
其中字b中内容为B时候代表完成状态
date_id a b
2014 1 A
2015 1 B
2016 1 A
2017 1 B
2013 2 A
2014 2 B
2015 2 A
2014 3 A
2015 3 A
2016 3 B
2017 3 A
问题1:取最新完成状态的前一个状态
输出结果如下:
问题2:如何将完成状态的过程合并
输出结果如下: