我有一个包含多个字段的数据集,但我关心的主要3个字段是客户端,名称和日期。我需要选择名称更改的行。我试图使用分区,但它不为我工作。
Client_Info表
Client Name Date
1 John 12-jun-2023
1 John 13-jun-2023
1 Mick 14-jun-2023
1 Mick 15-jun-2023
1 Paddy 16-jun-2023
2 Mary 12-jun-2023
2 Mary 13-jun-2023
2 Mary 14-jun-2023
2 Paula 15-jun-2023
2 Rita 16-jun-2023
SQL尝试
Select * from client_Info CI1
Inner join (select row_number() over (partition by client order by date desc) rn,
client,name,date
from Client_Info) CI2
on (CI2.client = CI1.client and
CI2.Date < CI1.Date and
CI2.Name <> CI1.Name)
Where rn = 1
Order by CI1.Date;
结果应为:
Client Name Date
1 John 12-jun-2023
1 Mick 14-jun-2023
1 Paddy 16-jun-2023
2 Mary 12-jun-2023
2 Paula 15-jun-2023
2 Rita 16-jun-2023
1条答案
按热度按时间3ks5zfa01#
使用lag olap函数。
| 客户端|名称|日期|
| --|--|--|
| 1 |约翰|2023年6月12日|
| 1 |米克|2023年6月14日|
| 1 |水稻|2023年6月16日|
| 2 |玛丽|2023年6月12日|
| 2 |Paula| 2023年6月15日|
| 2 |丽塔|2023年6月16日|
fiddle