我有一个包含多个日期和状态代码的文件:
(示例):
STAT_DT STAT_CD EMPLOYEE_ID
1/1/2017 A 1234
2/4/2017 A 1234
4/9/2017 A 1234
5/12/2017 A 1234
6/1/2017 T 1234
7/4/2017 T 1234
8/1/2017 A 1234
9/28/2017 A 1234
2/1/2017 A 7897
3/4/2017 A 7897
4/9/2017 A 7897
6/12/2017 A 7897
7/1/2017 T 7897
9/4/2017 T 7897
10/1/2017 A 7897
11/28/2017 A 7897
为了使此垃圾文件可用,我需要能够在每次状态更改之间保留MIN状态日期。
(在这种情况下,要保留的最小日期为: 1/1/2017 A,6/1/2017 T和8/1/2017 A EE 1234)
并删除其余所有内容。
到目前为止,我对如何实现此目标尚无定论,但是当我成功朝正确方向迈出一步时,我将进行更新。我只能说是感谢上帝的测试环境。...
答案 0 :(得分:3)
使用lag()
:
select t.*
from (select t.*, lag(stat_cd) over (partition by employee_id order by stat_dt) as prev_sc
from t
) t
where prev_sc is null or prev_sc <> stat_cd;
答案 1 :(得分:0)
我将以下选择的值插入新表中
select min(stat_dt), stat_cd, employee_id
from table_name
group by employee_id, stat_cd;
我刚刚注意到您的测试数据可以恢复到以前的状态。这意味着您需要添加自我连接以查找其他状态代码