【发布时间】:2019-12-09 07:11:26
【问题描述】:
这里是一些示例数据,显示了具有特定 ID 的开始日期和结束日期的各种雕像。
Days Elapsed 列是特定行的日期差异。
select
*,
DateDiff(d,StartDate,EndDate) as DaysElapsed
from
#Sample
我正在尝试将特定 ID 的总经过天数与第一个 StartDate 和最大的 End Date 进行比较。
在 ID 1 的情况下,经过了 22 天 (7+8+7),但是当您将第一个开始日期 (2019-11-01) 与最后一个结束日期 (2019-11-25) 进行比较时,它实际上是 24。所以我需要为 ID 1 添加另一行,其状态为“不正确的流”,经过的天数值为 2。如果匹配,则不会添加任何行。
如果记录的结束日期值为 NULL,则应该简单地忽略该 ID。所以预期的结果是:
样本数据
Create Table #Sample
(
ID int,
Status varchar(20),
StartDate datetime,
EndDate datetime
)
insert into #Sample
(
ID,
Status,
StartDate,
EndDate
)
select
1,
'Status 1',
'01 Nov 2019',
'08 Nov 2019'
union all
select
1,
'Status 2',
'10 Nov 2019',
'18 Nov 2019'
union all
select
1,
'Status 3',
'18 Nov 2019',
'25 Nov 2019'
union all
select
2,
'Status 1',
'02 Nov 2019',
'09 Nov 2019'
union all
select
2,
'Status 2',
'16 Nov 2019',
'29 Nov 2019'
union all
select
2,
'Status 3',
'29 Nov 2019',
'03 Dec 2019'
union all
select
2,
'Status 4',
'03 Dec 2019',
'08 Dec 2019'
union all
select
3,
'Status 1',
'01 Dec 2019',
'03 Dec 2019'
union all
select
3,
'Status 2',
'03 Dec 2019',
NULL
【问题讨论】:
标签: sql sql-server tsql