Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server按日期分组两个日期之间的数据求和_Sql_Sql Server - Fatal编程技术网

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的列,因此查询与问题不一致。对不起,我编辑了它。应该是现在。