【发布时间】:2019-12-30 20:21:14
【问题描述】:
你好,新年快乐! 我有一个关于累积公式的问题,如果“最后一次 fd 之间的天数”超过 30 天,它将“重置”。示例如下。
首先是信息有限的测试温度。我不需要关于 f-sdays 或 Last fd 之间的天数的帮助。这只是 累积天数计算。我希望输出看起来像 @results
DECLARE @test table(ID int, startdate date, finishdate date)
INSERT INTO @test(ID, startdate, finishdate) VALUES
(123, '2019-12-30', '2019-12-31'),
(123, '2019-11-15', '2019-12-10'),
(123, '2019-09-12', '2019-10-10'),
(123, '2019-09-02', '2019-09-09'),
(123, '2019-08-30', '2019-09-01'),
(789, '2019-11-30', '2019-12-31'),
(789, '2019-11-15', '2019-11-17'),
(789, '2019-09-12', '2019-10-10'),
(789, '2019-09-02', '2019-09-04'),
(789, '2019-08-30', '2019-09-01')
select *
from @test
DECLARE @results TABLE(ID int, startdate date, finishdate date ,[F-SDays] int, DaysBetweenLastFD int, cumulativeDays int)
INSERT INTO @results(ID, startdate, finishdate, [F-SDays], DaysBetweenLastFD, cumulativeDays) VALUES
(123, '2019-12-30', '2019-12-31', 1, 20, 26),
(123, '2019-11-15', '2019-12-10', 25, 36, 25),
(123, '2019-09-12', '2019-10-10', 28, 3, 37),
(123, '2019-09-02', '2019-09-09', 7, 1, 9),
(123, '2019-08-30', '2019-09-01', 2, 0, 2),
(789, '2019-11-30', '2019-12-31', 31, 13, 33),
(789, '2019-11-15', '2019-11-17', 2, 36, 2),
(789, '2019-09-12', '2019-10-10', 28, 8, 32),
(789, '2019-09-02', '2019-09-04', 2, 1, 4),
(789, '2019-08-30', '2019-09-01', 2, 0, 2)
select *
from @results
【问题讨论】:
标签: sql-server sum lag partition case-when