我需要一个脚本的帮助。 我有这样的表。
DateFrom DateTo
1.1.2013 5.1.2013
2.3.2013 5.3.2013
25.5.2013 5.6.2013
.
.
我需要这个结果的脚本。
DateFrom DateTo Result
1.1.2013 5.1.2013 5 - DateTo - DateFrom
2.3.2013 5.3.2013 9 - DateTo - DateFrom + Result from previous row
25.5.2013 5.6.2013 21 - DateTo - DateFrom + Result from previous row
感谢您的帮助。
答案 0 :(得分:0)
因为你有一个以前的如果你正在使用SQL Server 2012或更新版本,你可以使用分析函数(我认为Sybase的新版本也支持这个,但我不太熟悉它来确认这一点,更不用说告诉你了它开始受支持的版本):
SELECT DateFrom,
DateTo,
Result = SUM(DATEDIFF(DAY, DateFrom, DateTo) + 1) OVER(ORDER BY DateFrom)
FROM T;
但是,如果您使用的是旧版本的SQL Server和Sybase,或者所有版本的Access,则必须使用相关的子查询,例如:
SELECT DateFrom,
DateTo,
Result = ( SELECT SUM(DATEDIFF(DAY, DateFrom, DateTo) + 1)
FROM T AS T2
WHERE T2.DateFrom <= T.DateFrom
)
FROM T;