【发布时间】:2018-07-28 06:33:48
【问题描述】:
我有一个包含 entityID、开始日期、结束日期和天数的临时表。我通过获取开始日期和结束日期以及 +1 天之间的 datediff 来获得天数。我遇到的问题是,当一个实体的第二条记录的开始日期与其上一个结束日期相同时,我得到的天数为 1 太多。即:
EntityID StartDate EndDate NumOfDays
-------- --------- ------- ---------
3414 02/01/2018 02/02/2018 2
3414 02/02/2018 02/10/2018 9
我需要将第二条记录的 StartDate 设置为 02/03/2018 并且 NumOfDays 变为 8,以便整个天数范围为 10,这将是正确的。临时表按 EntityID、StartDate 排序。表中将有数千条记录,可能有几百条有这种情况。如果该实体之前的结束日期相同,我只需要更改开始日期。
我应该做一个循环吗?光标?还是有更好的办法?
我们使用的是 SQL Server 2014
【问题讨论】:
标签: sql sql-server tsql cursor common-table-expression