首页 > 解决方案 > 如何查询审计表以添加开始结束日期

问题描述

我有一个审计表,显示一个值何时更改为特定标志('Y'、'N'、'A'、'B'),我想组织数据,以便对于每个 ID,它会反映何时该标志的开始和结束时间。

样本数据:

ID Flag_Audit 更新日期时间
1 将标志从:N 更改为:B 2021 年 8 月 6 日 2:58
1 将标志从:B 更改为:Y 2021 年 8 月 6 日 12:58
1 将标志从:Y 更改为:N 2021 年 8 月 20 日 10:58
2 将标志从:Y 更改为:N 2021 年 8 月 1 日 12:38
2 将标志从:B 更改为:Y 2021 年 8 月 11 日 10:58

预期输出:

ID 旗帜 从日期 迄今为止
1 2021 年 8 月 6 日 2:58 2021 年 8 月 6 日 12:58
1 2021 年 8 月 6 日 12:58 2021 年 8 月 20 日 10:58
1 ñ 2021 年 8 月 20 日 10:58 无效的
2 ñ 2021 年 8 月 1 日 12:38 2021 年 8 月 11 日 10:58
2 2021 年 8 月 11 日 10:58

你能帮我解决这个问题吗?谢谢!

标签: sql

解决方案


像这样的东西应该适合你:

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;

推荐阅读