【发布时间】:2019-03-02 18:15:46
【问题描述】:
我有两个表,TABLE1 和 TABLE2,结构如下:
表 1:
....|VALUE1| STARTDATE| ENDDATE|....
....|1 |2015-01-01|2015.01.03|....
....|2 |2015-01-01|2015.01.04|....
....|3 |2015-01-02|2015.01.04|....
....|4 |2015-01-03|2015.01.05|....
....|5 |2015-01-03|2015.01.05|....
....|6 |2015-01-03|2015.01.06|....
....|7 |2015-01-04|2015.01.06|....
....|8 |2015-01-04|2015.01.08|....
....|N |2015-01-04|2015.01.09|....
表 2:
DATE| TEMPERATURE|....
2015-01-01| 1|....
2015-01-02| 2|....
2015-01-03| 1|....
2015-01-04| 3|....
2015-01-05| 2|....
2015-01-06| 4|....
2015-01-07| 3|....
2015-01-08| 3|....
2015-01-09| 3|....
`
我想像这样合并它们:
....|VALUE1| STARTDATE| ENDDATE| AVG TEMPERATURE|
....|1 |2015-01-01|2015.01.03| 1.3|
....|1 |2015-01-01|2015.01.03| 1.3|
....|2 |2015-01-01|2015.01.04| 1.75|
....|3 |2015-01-02|2015.01.04| 2|
....|4 |2015-01-03|2015.01.05| 2|
....|5 |2015-01-03|2015.01.05| 2|
....|6 |2015-01-03|2015.01.06| 2.5|
....|7 |2015-01-04|2015.01.06| 3|
....|8 |2015-01-04|2015.01.08| 3|
....|N |2015-01-04|2015.01.09| 3|
所以我想计算新结构中这段时间(开始日期和结束日期之间)的平均温度。
我尝试了以下查询:
select TABLE1.STARTDATE, TABLE1.ENDDATE,AVG(TABLE2.TEMPERATURE) as AVGTEMPERATURE
from TABLE1
left outer join TABLE2
on TABLE2.Date between TABLE1.STARDATE and TABLE1.ENDDATE
但它不起作用并显示此消息:
选择列表中的“TABLE1.STARDATE”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
【问题讨论】:
-
是的。永远不要使用
SELECT * -
'....' 是什么意思?
-
其他列其他值