如果客户状态发生变化则SQL查询,如果状态没有变化则不需要记录

问题描述 投票:0回答:1

[为表和输出添加图片1下面是表结构id,状态和日期变化

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 查询

sql sql-server mysqli teradata plsqldeveloper
1个回答
0
投票

试试这个:

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

© www.soinside.com 2019 - 2024. All rights reserved.