以下是我目前正在使用的表格的示例:
Date -------- Number -------Total
2012-03-28 3 158
2012-03-29 4 168
2012-04-08 2 256
2012-04-12 1 155.98
2012-04-14 6 245.00
2012-04-20 10 156
2012-04-21 8 87
2012-04-26 3 158
2012-04-26 4 168
2012-04-29 2 256
2012-04-30 1 155.98
2012-05-02 6 245.00
2012-05-02 10 156
2012-05-02 8 87
我需要从中得到如下表:
Total ----- Current ----7Days----14Days
2451.96 1225.98 1869.96 1869.96
在这种情况下,总和是SUM(总计), 当前是今天日期(2013年2月5日)的-7天因此从05/02 / 2013-04 / 25/2013添加总和 7天是今天日期的-14天或者是当前的-7天。所以它增加了05/02 / 2013-04 / 18/2013的总和。
所以。我不知道如何创建一个查询来获得7天的总和。
请帮忙!
答案 0 :(得分:1)
您可以使用带有CASE
表达式的聚合函数来获得结果:
select
sum(total) Total,
sum(case when date >= dateadd(d, -7, getdate()) then total end) [Current],
sum(case when date >= dateadd(d, -14, getdate()) then total end) [7Days],
sum(case when date >= dateadd(d, -21, getdate()) then total end) [14Days]
from yt;
如果您有更多日期范围,则会添加更多sum(case...)
个表达式。
答案 1 :(得分:0)
SELECT SUM(Total) as 'Total',
SUM( CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 7,101)
THEN Total ELSE 0 END) as 'Current',
SUM( CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 14,101)
THEN Total ELSE 0 END) as '7Days' ,
SUM( CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 28,101)
THEN Total ELSE 0 END) as '14Days'
FROM mytable
<强>输出强>
TOTAL CURRENT 7DAYS 14DAYS
2451.96 1225.98 1468.98 2125.96