我有一个审计表,显示一个值何时被更改为特定的标志('Y', 'N', ' a ', 'B'),我想组织数据,以便对于每个ID,它将反映何时开始和结束时间是为该标志。
样本数据:
ID | Flag_Audit | updateddatetime | 1 | 改变国旗:N: B | 8/6/2021 2 | 1
---|---|---|
改变国旗:B: Y | 8/6/2021 12:58 | |
改变国旗:Y: N | 8/20/2021 10:58 | |
改变国旗:Y: N | 8/1/2021 38 | |
改变国旗:B: Y | 8/11/2021 10:58 |
像这样的东西应该为您工作:
select id, right(flag_audit, 1) as flag,
updateddatetime as from_date,
lead(updateddatetime) over (partition by id order by updateddatetime) as to_date
from t;