我有一个包含SentDate和RefundAmounts的表格。我想总结从日期到未来一年每一行的每一行的金额。
在下面的示例中,我想添加一列,表示年份的总和。 该金额应是第一行从'2006-12-14'到'2007-12-14'的退款总额,即3696,22,因为在此期间没有退款。 第二行是从“ 2007-12-24”到“ 2008-12-24”,即463,05
SentDate YearAhead RefundAmount
2006-12-14 2007-12-14 3696,22
2007-12-24 2008-12-24 394,35
2008-12-18 2009-12-18 44,33
2008-12-19 2009-12-19 24,37
2009-12-16 2010-12-16 21,88
我尝试了类似的方法
select SentDate, dateadd(year,1,sentdate) YearAhead, SumRefund
from table
但我不知道如何获取每一行的年度未来总金额
谢谢你的建议。最终结果应如下所示:
SentDate YearAhead RefundAmount SumForYear
2006/12/14 2007/12/14 3696,22 3696,22
2007/12/24 2008/12/24 394,35 463,05
2008/12/18 2009/12/18 44,33 90,58
2008/12/19 2009/12/19 24,37 46,25
2009/12/16 2010/12/16 21,88 21,88
答案 0 :(得分:0)
如果您始终需要一整年的时间,则应满足以下需求:
select sum(refund) as refundAmounts,year(min(SentDate)) as year from yourTable group by year(SentDate)
year函数仅从日期时间行中获取年份部分,并且具有group by,您可以将sum和min函数的聚合划分为不同的组。
答案 1 :(得分:0)
您需要与BETWEEN
联接以收集组成该时间段的所有行,然后将GROUP BY
与SUM
一起使用以得出结果。
select
T.SentDate,
dateadd(year, 1, T.SentDate) YearAhead,
SUM(P.SumRefund) AS TotalOverYear
from
YourTable AS T
INNER JOIN YourTable AS P ON P.SentDate BETWEEN T.SendDate AND DATEADD(YEAR, 1, T.SendDate)
GROUP BY
T.SentDate