首页 > 解决方案 > 来自不同表的日期范围之间的平均列

问题描述

所以我确定这里有一个简单的解决方案,但我无法让它工作。我目前有两个结构如下的表:

Table 1                                                                  Table 2
Name    Date    x      y     z                                         Name      Date

John    03/11   91     15    3                                         Mary      05/26
Mary    05/25   95     10    1                                         John      08/15
John    08/14   89     13    5 
John    08/15   85     11    4

我希望能够获得每个人的每列 (x,y,z) 的平均值,其中表 1 中的日期在表 2 中的日期之前的 7 天内。即它应该平均第 2 和第 3 John 的条目和 Mary 的条目。我努力了:

SELECT avg(x), avg(y), avg(z)
FROM table1
Where table1.Date
in(SELECT * FROM table2 WHERE table1.date BETWEEN table2.date AND table2.date - DATEADD(day, 7, table2.date)
GROUP BY table1.Name = table2.Name

任何帮助将不胜感激。

标签: sql

解决方案


我认为这应该给出预期的结果。我假设它是 SQL 服务器,所以它可以在 SQL 服务器中工作

SELECT t.name,avg(x), avg(y), avg(z)
FROM table1 t 
Where exists 
(select 1 from  table2 t2 where t2.name = t.name  and t.date between dateadd(day, -7, t2.date) and t2.date )
GROUP BY t.name 

推荐阅读