我在编写执行内部联接的查询时遇到了麻烦。
在我的数据库表中,我有列Date,HighTemperature,LowTemperature。我想要的是按一年中的月份来计算诸如最高温度之类的信息,并检索这些信息同时发生的日期。使用以下查询,效果很好:
SELECT ds.Date,
MONTH(ds.Date) AS Month,
ds.HighTemperature
FROM WeatherData.DailyStats ds
INNER JOIN (SELECT MONTH(Date) AS Month,
Date,
MAX(HighTemperature) AS HighTemperature
FROM WeatherData.DailyStats GROUP BY Month) ds2
ON MONTH(ds.Date) = MONTH(ds2.Date) AND ds.HighTemperature = ds2.HighTemperature
ORDER BY MONTH(ds.Date), ds.DATE ASC
这给了我12行,一年中的每个月一次。每行都包含月份号,该月份记录的最高温度及其发生的日期。
现在我没有成功的地方是,当尝试做一些更棘手的事情时,不是想直接在HighTemperature上运行查询,而是要查找每个月的最高每日温度范围,即得到相同的(HighTemperature - LowTemperature) AS TemperatureRange
的搜索结果。
如何修改查询以执行此操作?
答案 0 :(得分:0)
啊,明白了!
我遇到的问题是因为我在ON语句中试图对TemperatureRange = ds2.TemperatureRange
进行分组,其中TemperatureRange来自第一个查询。
相反,如果我将其替换为ds.HighTemperature - ds.LowTemperature = ds2.TemperatureRange
,一切都很好!