我在 Microsoft SQL Server 数据库中。我想合并员工的开始和结束期间。例如,给定以下简单表格:
create table dbo.foo (
employee_key bigint,
effective_start_date date,
effective_end_date date,
account_name varchar(100));
insert into foo (employee_key,
effective_start_date,
effective_end_date,
account_name)
values (1
,'2017-01-01'
,'2017-01-31'
,'Google')
,(1
,'2017-02-01'
,'2017-02-28'
,'Apple')
,(1
,'2017-03-01'
,'2017-03-31'
,'Google')
,(1
,'2017-04-01'
,'9999-12-31'
,'Google')
该员工已经移动了几次帐户。我想保持二月份的变化,然后再回来。但是,我不想最后看到 2 条记录。相反,我希望 Google 的任期从 2017 年 3 月 1 日到 9999 年 12 月 31 日。
顺便说一句,这是一个例子。也就是说,“损坏”的记录并不总是在员工任期结束时。
预期成绩:
employee_key | effective_start_date | effective_end_date | account_name
1 | 2017-01-01 | 2017-01-31 | Google
1 | 2017-02-01 | 2017-02-28 | Apple
1 | 2017-03-01 | 9999-12-31 | Google