SQL DB2 显示名称字段发生变化的数据行

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

我有一个包含多个字段的数据集,但我关心的主要 3 个字段是客户、名称和日期。我需要选择名称更改的行。我尝试使用 Partition By 但它对我不起作用。

客户信息表

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
sql db2
1个回答
0
投票

ROW_NUMBER
是正确的选择,您只需要另一列来分区

WITH CTE AS (
select client,name,date 
,row_number() over (partition by client,name order by date ASC) as rn
FROM Client_Info
)
SELECT client,name,date 
FROM CTE
WHERE rn = 1
© www.soinside.com 2019 - 2024. All rights reserved.