SQL Server按日期分组两个日期之间的数据求和
我的表格中有以下数据:SQL Server按日期分组两个日期之间的数据求和,sql,sql-server,Sql,Sql Server,我的表格中有以下数据: eb |anz 05.03.2020 | 2 06.03.2020 | 3 07.03.2020 | 1 08.03.2020 | 9 09.03.2020 | 10 10.03.2020 | 2 11.03.2020 | 20 12.03.2020 | 25 现在我需要对每个日期特定范围内的值求和。 例如,2020年3月12日:我想对2020年3月12日的3月12日、11日、10日和9日的值求和。此外,我想在3月9日之前对其他四个值求
eb |anz
05.03.2020 | 2
06.03.2020 | 3
07.03.2020 | 1
08.03.2020 | 9
09.03.2020 | 10
10.03.2020 | 2
11.03.2020 | 20
12.03.2020 | 25
现在我需要对每个日期特定范围内的值求和。
例如,2020年3月12日:我想对2020年3月12日的3月12日、11日、10日和9日的值求和。此外,我想在3月9日之前对其他四个值求和,并用select将汇总1除以汇总2
所以我的计算是:25+20+2+10/9+1+3+2=3.8
我想输出表中每个日期的日期和计算值
我试图对示例3月9日至12日中每个日期的第一组数据求和,但结果与表中的数据相同
select
eb,
sum(anz)
from (select eb, count(*) as anz from myTable where eb != '' group by eb) tmp
where
convert(date, eb, 104) >= dateadd(day,-3,convert(datetime, eb, 104))
and convert(date, eb, 104) <= convert(date, eb, 104)
group by eb
order by convert(date, eb, 104)
看起来该条件被忽略了。你对我有什么建议吗
非常感谢让我假设数据正确存储为日期,然后您可以使用窗口功能:
select t.*,
(sum(anz) over (order by eb rows between 3 preceding and current row) /
sum(anz) over (order by eb rows between 8 preceding and 4 preceding)
)
from t;
请注意,如果值是整数,则使用*1.0/避免整数除法
此外,这假设您在每个日期都有数据。您的表中没有称为eb的列,因此查询与问题不一致。对不起,我编辑了它。应该是现在。