Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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查询联接一列的平均值,其中另一列位于另一个表的两列值之间_Sql_Sql Server_Select - Fatal编程技术网

Sql查询联接一列的平均值,其中另一列位于另一个表的两列值之间

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

我有两个表,一个表有两列,有日期。另一列有一列是日期,另一列是数字数据。我想加入第二个表的数字列值的平均值,其中日期列位于第一个表中两个日期列的值之间。如下所示:

表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        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