Sql查询联接一列的平均值,其中另一列位于另一个表的两列值之间
我有两个表,一个表有两列,有日期。另一列有一列是日期,另一列是数字数据。我想加入第二个表的数字列值的平均值,其中日期列位于第一个表中两个日期列的值之间。如下所示: 表1:Sql查询联接一列的平均值,其中另一列位于另一个表的两列值之间,sql,sql-server,select,Sql,Sql Server,Select,我有两个表,一个表有两列,有日期。另一列有一列是日期,另一列是数字数据。我想加入第二个表的数字列值的平均值,其中日期列位于第一个表中两个日期列的值之间。如下所示: 表1: Date1 Date2 6/28 2:00 6/30 4:00 7/1 4:00 7/4 7:00 ... 表2: Date3 Value 6/29 1:00 6.5 6/30 3:00 2.5 7/1 5:00 3.0 7/3 9:00 5.0 ... 财务报表: Date1
Date1 Date2
6/28 2:00 6/30 4:00
7/1 4:00 7/4 7:00
...
表2:
Date3 Value
6/29 1:00 6.5
6/30 3:00 2.5
7/1 5:00 3.0
7/3 9:00 5.0
...
财务报表:
Date1 Date2 AvgValue
6/28 2:00 6/30 4:00 4.5
7/1 4:00 7/4 7:00 4.0
您可以在连接条件中使用
between
运算符:
SELECT date1, date2, AVG(value)
FROM table1
JOIN table2 ON date3 BETWEEN date1 AND date2
GROUP BY date1, date2
选择日期1、日期2、平均值(值)
来自表1 t1
在t3.date3>=t1.date1和t3.date3
或
选择日期1、日期2、平均值(值)
来自表1 t1
加入表2 t2 ON t3.date3>t1.date1和t3.date3谢谢Mureinik,这是正确的答案。虽然我的最终查询比这更重要,但这是有效的!
SELECT date1, date2, AVG(value)
FROM table1 t1
JOIN table2 t2 ON t3.date3 >= t1.date1 AND t3.date3 < t1.date2
GROUP BY t1.date1, t1.date2
SELECT date1, date2, AVG(value)
FROM table1 t1
JOIN table2 t2 ON t3.date3 > t1.date1 AND t3.date3 <= t1.date2
GROUP BY t1.date1, t1.date2