id | st | chngdt |
---|---|---|
123 | 1 | 2022年1月7日 |
123 | 1 | 2022年2月7日 |
123 | 1 | 2022年7月3日 |
123 | 1 | 2022年1月7日 |
145 | 1 | 2022年5月7日 |
156 | 1 | 2022年1月7日 |
156 | 1 | 2022年2月7日 |
156 | 2 | 2022年6月7日 |
156 | 3 | 2022年9月7日 |
如果仅客户状态发生变化,则需要输出:
id | 旧事 | 旧日期 | 新_st | 日期 |
---|---|---|---|---|
156 | 2 | 2022年6月7日 | 3 | 2022年9月7日 |
寻找 SQL 或 Teradata 查询
试试这个:
SELECT *
FROM (
SELECT id, st As new_st, chngdt As [date]
,LAG(st) OVER (partition by id order by chngdt) oldsts
,LAG(chngdt) OVER (partition by id order by chngdt) old_date
) t
WHERE oldsts <> st and oldsts is not null
虽然我的顺序可能颠倒了,但你需要的是
DESC